Advanced MACD Pro
ProductcTrader Algo Indicator (oscillator pane)
Version2.0
PlatformcTrader Desktop / Web
PermissionsAccessRights.None
Parameters162 in 15 groups
Outputs12 data series
Manual revision2026-10 (v2.0)
What this product is, in one paragraph Advanced MACD Pro is an oscillator-pane indicator that rebuilds the classic MACD as an adaptive, timeframe-aware instrument: every period, window and threshold is derived from the resolved bar duration through a documented scaling law, so the same configuration means the same thing on M1 and on W1. On top of that oscillator sit six engines — a divergence detector with prominence-filtered non-repainting pivots, A/B/C grading and a 13-component quality score; a crossover latch with an optional early-entry band; a higher-timeframe confluence ladder where each level is parameterised as if you had opened that chart yourself; and an adaptive learner that measures the outcome of every signal it ever emitted, per signal family, on your broker's feed, and feeds the measured win rate back into the quality score. Around that oscillator v2.0 also closes the trade lifecycle: a projection engine turns every registered signal into an explicit Entry / SL / TP1 / TP2 plan and manages it bar by bar; momentum trendlines are drawn through the oscillator's own confirmed pivots and announce their breaks before price does; thin session markers put UTC context on the price chart; and a CSV signal journal writes every live signal, plan event and measured verdict to the log (§13–§16). It places no orders, reads no account data and asks for no permissions.
What this revision of the engine contains The manual documents version 2.0: the v1.0 oscillator, divergence, confluence and learning engines exactly as they were, with the trade lifecycle built around them. The changes a user can actually observe:
  • Trade management (group 12). A projection engine turns every registered divergence into an explicit plan — Entry / SL / TP1 / TP2 drawn as labelled levels on the price chart — and manages its lifecycle on closed source bars only: RUNNING → TP1 HIT → TP2 HIT | STOPPED | STALE, with the conservative same-bar rule, break-even and chandelier-trailing hints, plan-level alerts and an AMP-PLAN journal line per event (§13).
  • Momentum trendlines (group 13). Automatic support / resistance lines through the confirmed pivots' MACD readings, slope cap and break threshold in the oscillator's own RMS units, strictly non-repainting break detection, TL BREAK markers, an alert family and two panel rows (§14).
  • Session markers (group 14). Thin UTC verticals on the price chart — occurrence-complete even inside Weekly and Monthly bars, rolling window, hard object cap, and zero interaction with signal logic (§15).
  • The CSV signal journal. Three id-keyed streams in the platform log — AMP-JOURNAL, AMP-PLAN, AMP-OUTCOME — history-gated, invariant-culture, Excel-ready (§16).
  • The higher-timeframe MACD line. The first rung of the confluence ladder, strict-mapped and plotted in the primary line's display units, as the twelfth output series (§5.7, §9, §12.1).
  • Four trading styles. Swing and Position join Universal and Scalping, and every preset now pins the complete surface it consumes — about 134 of the 162 parameters — so one style resolves identically whatever template it was saved into (§4, §32.8).
  • Cross Mode replaces the zero-line checkbox. The markers follow the signal line, the zero line or both, while the trigger outputs stay bound to the signal-line latch and the alert toggles stay independent (§8).
  • Alerts grow two families and a cooldown. Trendline breaks and plan levels join crosses, divergences and confluence flips; Alert Cooldown spaces repeats per family and direction, and every freshness window is scaled by the source / chart bar ratio (§11).
  • The calendar-robustness port. Real-close caps against look-ahead on irregular (Monthly / short-holiday) calendars in both mapping families and every confluence / higher-TF read; containing-bar walk-backs; clamp-before-cast; overflow-safe horizons; NaN and infinity rejected at every decision point (§2.3, §9.3).
  • Four more audit rounds. Rounds five to eight re-verified every kernel, mapping, gate, score and lifecycle routine — including an independent numerical re-implementation of all ten MA kernels and a real compile against the published cAlgo.API surface. Sixteen defects were found and fixed; none of them changes a documented design decision (Appendix B).
How this manual is organised Three sections. Section 1 — Features is the reference: every module, every formula, every guarantee and all 162 parameters, in the order the code computes them. Section 2 — How to Use is the working guide: every glyph in the pane, every line of the panel, how to read a divergence, when a crossover is worth acting on, and how to drive the multi-timeframe ladder. Section 3 — Tips collects the habits that make the tool pay for itself, the mistakes that make people abandon it, a step-by-step procedure for verifying the non-repaint claim yourself, FAQ, troubleshooting and a glossary. If you read nothing else, read 2.2 (the guarantees), 6.5 (the quality score), 13.5 (the plan lifecycle) and 31 (the golden rules).
Read this before you change a single parameter Most parameters whose name ends in “(reference / manual)” or “(reference)” are reference values anchored at H1, not the values the indicator runs with. In Adaptation Mode = Automatic (the default) each of them is rescaled by the timeframe scaling law and then clamped by wall-clock caps; the numbers actually in force are printed to the log at start-up (Log Resolved Profile On Start) and shown in the panel's configuration section. Changing a reference value changes the anchor of the whole curve, not one number.
Advanced MACD Pro on a full cTrader workspace
The whole terminal: the price chart, and below it the indicator's own oscillator pane. The price chart is where the optional divergence mirror is drawn (§6.9); the pane below carries the MACD line, the signal line, the four-bucket histogram, the zero reference, the crossover markers, the divergence layer and the info panel. Every element in it is described in §20.

SECTION 1 — FEATURES

Everything the product is, module by module, formula by formula, parameter by parameter.

1. Introduction & Philosophy

1.1 What Advanced MACD Pro is

Advanced MACD Pro lives in its own oscillator pane under the price chart. It plots a MACD line, a signal line, a zero reference line and a histogram — the familiar four — and then does four things that the classic indicator does not do:

1.2 The philosophy in one paragraph

Adapt, don't look up. Measure, don't promise. Never repaint a confirmed signal. A parameter set is a hypothesis about bar duration; the scaling law states that hypothesis once, in a formula you can read (§3.3), instead of hiding it in a table nobody can audit. A quality score is a weighted mean of normalised, scale-free components — not a probability, and never presented as one. A win rate is printed with its sample size, or the word collecting, or the word off. And a signal that has been confirmed cannot move again: pivots publish after their right leg closes, outcomes latch, marker anchors are computed from bar open times rather than from “now”, and a history reload rebuilds everything from scratch instead of patching stale indices.

1.3 Feature summary at a glance

CapabilityWhat you get
OscillatorMACD + signal + histogram + zero line, on 6 price inputs and 10 moving-average kernels, with an independent kernel choice for the signal line
Adaptive engineScaling law with microstructure-noise and horizon terms; 2 sensitivity knobs; 2 high-timeframe policies; everything re-derived on timeframe change
Regime filter bankTwo MACD instances straddling the nominal periods, mixed by a smoothed Kaufman Efficiency Ratio: responsive leg wins in trends, smooth leg wins in chop
Early entrySignal Sensitivity Lambda advances the crossover trigger by a band measured in the oscillator's own units, with a latch that guarantees exactly one trigger per excursion
DivergencesRegular + hidden, A/B/C grading, zero-line rule, RSI and histogram confirmation, multi-candidate search, prominence filter, non-repainting pivots
GatesAdaptive (percentile of the symbol's own ATR% distribution) or fixed volatility floor, trend/counter-trend slope, ADX, volatility spike, momentum/follow-through, cluster suppression, trading session, MTF confluence
Quality score13 weighted components, each normalised against a scale-free reference; unavailable components are dropped from numerator and denominator
LearningPer-family outcome tracking in ATR units, win rate fed back into quality, persistence across sessions, honest sample-size reporting
Multi-timeframeDerived or pinned ladder, per-level adaptive profiles, weighted confluence score (−100..+100), soft-penalty or hard gate, strict closed-bar mapping
PresentationFused or split info panel built from real chart controls (with a static-text fallback), 4 histogram buckets, crossover markers with 4 wordings, divergence lines/markers/labels/drop-lines, optional mirror on the price chart
AlertsLog line + platform popup (colour-coded by direction) + sound, on crossovers, zero-line crosses, divergences and confluence flips; closed-bar-only mode; quality floor for divergence alerts
Automation11 output data series, chart-indexed, consumable by cBots and by other indicators
TransparencyResolved profile printed at start-up, every contradiction reported, per-signal skip reasons under Debug Log, culture-neutral text everywhere
Trade managementEntry / SL / TP1 / TP2 plans on the price chart, a 5-state lifecycle resolved on closed bars with the conservative same-bar rule, break-even and chandelier-trail hints, plan-level alerts, 12 parameters (§13)
Momentum trendlinesSupport / resistance through the confirmed pivots' MACD readings, x-RMS slope cap and break threshold, TL BREAK markers, alert family, panel rows, 7 parameters (§14)
Session markersThin UTC verticals on the price chart, occurrence-complete inside wide bars, rolling window, 1500-object cap, 4 parameters (§15)
CSV signal journalAMP-JOURNAL / AMP-PLAN / AMP-OUTCOME, id-keyed, history-gated, invariant-culture (§16)

1.4 What the implementation is built on

The source cites its references explicitly; this is what each one contributes.

ReferenceWhat it suppliesWhere it lives in the product
Y. Li, Operator Analysis of MACD, arXiv:2509.21326 (2025)MACD as a phase-corrected smoothed derivative, structurally a band-pass filter; de-lagged averages shift the pass-band without adding noise; blending two period sets forms a regime-following filter bankThe kernel library (Hull / DEMA / TEMA), and the Regime-Adaptive Filter Bank (§5.5)
L. Lin et al., A Volume-Price-Adjusted MACD Trading Strategy…, arXiv:2604.26063 (2026)(a) the volume / volatility / candle-body adjusted price input; (b) the lambda early-entry rulePrice Input = VolumePriceAdjusted (§5.2) and Signal Sensitivity Lambda (§5.6). The paper applies lambda to the long side only; here it is expressed as a symmetric band in the oscillator's own units
P. Kaufman, Smoothing Techniques for More Accurate Signals (1995)Efficiency RatioThe regime weight of the filter bank, and the KAMA kernel itself
A. Lo, A. W. MacKinlay, Stock Market Prices Do Not Follow Random Walks (1988)Variance-ratio / microstructure-noise argumentThe (1 + ε/D) term of the scaling law (§3.3)
C. Brown, Technical Analysis for the Trading Professional; Murphy / AppelA/B/C divergence grading; classic MACD divergence and zero-line rules§6.4 (grading) and the Require Zero-Line Match gate

1.5 What it does not do

No trading, no permissions, no invented numbers AccessRights.None: the indicator cannot place, modify or close an order, cannot read your account or your positions, and writes no files. The only thing it persists is its own learning counters, through the platform's LocalStorage, under a key namespaced by symbol and resolved profile. It prints no probability, no price target and no promise — the outcome engine reports what happened to past signals in ATR multiples, with the sample size attached.

2. Architecture & Guarantees

2.1 Two index spaces, and why that matters

The indicator can run on a source timeframe that is not the chart timeframe (Source Timeframe). That creates two index spaces, and confusing them is the classic source of multi-timeframe bugs:

SpaceIndexed byWhat lives there
Source spacebars of the resolved source timeframe (_sourceBars)Every internal series: price input, MACD, signal, histogram, scale, cross latch, pivots, divergences, outcomes, learning, alerts. All of it lives in growable SeriesBuffer arrays, not in the platform's output series
Chart spacebars of the chart you are looking at (Bars)The 11 output series and every chart object's X coordinate

Writing a source index into a chart-indexed IndicatorDataSeries is unsafe whenever the source is finer than the chart (more source bars than chart bars) — it silently writes to the wrong bar or out of range. This indicator therefore keeps the mathematics in its own buffers and only ever writes final, chart-indexed values to the outputs, through the mapping functions of §2.3.

2.2 The computation pipeline, in the exact order it runs

Inside the MACD pipeline, one call to ComputeRange(from, to) performs, in this order:

  1. Price input — build the oscillator's source series for the range (close / typical / weighted / median / Heikin-Ashi / volume-price-adjusted, §5.2). Missing components fall back to the close so one bad bar cannot blank the oscillator for a whole window.
  2. Efficiency ratio — raw Kaufman ER per bar, then smoothed by an EMA over 2 × ER Period bars. This is the regime weight.
  3. MACD line — either one fast/slow pair, or (with the filter bank on) the weighted blend of a responsive and a smooth pair. The blend is defined only when both legs are defined.
  4. |MACD| and its rolling mean — Scale, a simple MA over NormWindow = clamp(4×Slow, 40..600) bars. This is the oscillator's own yardstick.
  5. Signal line — a moving average of the MACD line, over the resolved signal period, with the kernel chosen by Signal Line MA Type.
  6. Histogram = MACD − signal; then |histogram| and its rolling mean (HistScale), which is the unit the early-entry band and the “STRONG/NORMAL/WEAK” panel row are measured in.
  7. Cross latch — the sequential ±1 state machine behind every crossover signal (§5.6, §8).

Then, once per chart bar, Calculate(index) runs the outer pipeline:

  1. reload / shrink detection → full rebuild if history changed shape (§2.6);
  2. Sync(true) on the primary pipeline: append new source bars, re-evaluate the forming one;
  3. rewrite the just-closed chart bar with the strict mapping (§2.3);
  4. map this chart bar onto the source series and write the outputs;
  5. crossover markers (§8);
  6. pivots, divergences, momentum trendlines and the plan lifecycle (§6, §13, §14) — deliberately before the confluence / volatility / outcome updates, because the pivot scanner advances those three states itself to their canonical per-confirmation point, which is what makes a bulk history pass bitwise identical to the live pass. The trendline engine and the plan lifecycle resolve on the same closed-bar footing;
  7. MTF confluence (§9), volatility baseline, outcome tracking (§7);
  8. the draw window is re-enforced between registrations, so a plan survives its record losing a drawing rank (§13.7);
  9. on the last chart bar only: alerts (§11), the plan-extension pass (once per closed chart bar, gated on each plan's own source-freshness watermark), the session-marker sweep (§15), panel refresh (§10), and arming of the alert latches at the end of the initial history pass.

2.3 Chart → source mapping

SituationRuleWhy
The forming chart barmaps to the newest source barso the oscillator follows price tick by tick
Source finer than chartlast source bar that had closed by the end of that chart bara chart candle aggregates several source candles; picking the first would freeze the value
Source coarser than chart, Strict Non-Repaint MTF Mapping = truelast source bar that had closed when the chart bar closedthe naive “bar containing the chart open” shows a higher-timeframe candle's final value on earlier chart bars — silent repainting of history
Source coarser, strict offthe bar containing the chart open timeresponsive, at the cost of the above
No source bar had closed yetreturns −1 and the row is plotted emptyborrowing a still-forming bar would be look-ahead

“Closed by T” is answered as “opened at or before T − sourceSpan”, which the platform's time series resolves in O(log n). When the cutoff lands inside a non-trading gap (weekend, session break) the lookup can round up to the next bar, so the mapper walks back to the last bar that really opened at or before the cutoff. The same rule, with the same guard, maps the higher-timeframe ladder (§9.4).

2.4 The guarantees

GuaranteeHow it is enforced
Pivots never repaintA pivot at bar c is only evaluated once bar c + PivotLookback has closed: the scanner's right edge is min(currentSourceIndex, Count-2) - lookback. On a live tick the forming bar can never confirm a pivot, so a divergence cannot appear mid-bar and survive after the bar exceeds the “pivot” extreme
Entry price has no look-aheadThe outcome engine's reference is the confirmation bar (pivot + lookback), not the pivot bar: the pivot only becomes known lookback bars later
Outcomes latchEach record remembers how far it has been scanned (ScannedTo) and stops at the first of target / stop / horizon. A later wick cannot un-resolve an outcome, and the total cost over the whole history is O(bars), not O(bars × horizon)
Deterministic anchorsEvery marker is anchored on the chart bar that contains its source bar's open time, so its position is identical live, on a replay and after a reload. Nothing migrates while a bar is forming
Live == replayThe pivot scanner advances confluence, the volatility model and the outcome tracker to their canonical per-confirmation state before each registration, so a bulk history pass produces the same quality scores as the live pass did
One trigger per excursionThe crossover latch is a sequential ±1 state machine: a trigger can never be emitted twice for the same excursion, and an excursion can never pass unannounced — both impossible to guarantee from a local two-bar test once the early-entry band is wider than zero
Reload-safeA history reload, symbol switch or shrink discards every index-based state (pivots, divergences, markers, learning counters, alert latches, volatility model, memo caches) and rebuilds it; output series are rewritten wholesale because historical chart bars are never visited again
Bounded objectsDrawn divergences, cross markers and panel controls all live inside explicit budgets (§34); the back-fill of markers is bounded by the drawn window, and trimming also runs during a long back-fill so peak memory stays flat
No silent misconfigurationContradictory parameters are reconciled to the safe side and reported at start-up: swapped fast/slow, inverted distance window, overlapping quality bands, alert bar vs quality gate, empty session window, a session calendar the symbol does not expose, a fixed ATR% ignored in adaptive mode, an unrecognised custom timeframe, and — in manual mode — any value that did not survive the profile invariants verbatim
Culture-neutral textEvery log line, panel cell, label, tooltip and alert is formatted with the invariant culture, so a pasted log is comparable on a comma-decimal system
No permissionsAccessRights.None

2.5 What is allowed to move — honestly

“Non-repainting” is only a meaningful claim if it says what it covers. This is the complete list of things that legitimately change while a bar is forming, and everything else is final:

Moves intrabarWhy that is correct
The MACD line, signal line and histogram of the forming barThey follow price by design; that is what a live oscillator is for. The row is rewritten with the strict mapping the moment the chart bar closes, so stored history equals what a full recompute produces
The crossover marker of the forming barProvisional by design when Mark Only Closed Bars = false: it is re-checked on every tick and withdrawn if the cross does not survive to the close
The panel's live rows (price, ATR, session, bias, momentum…)A read-out of the present moment
Confluence, when Strict Non-Repaint MTF Mapping = falseOpt-in: the ladder then quotes the forming higher-timeframe bar. With the default true, the ladder quotes only bars that have really closed
Never movesMechanism
A confirmed pivotpublished only after its right leg closed
A registered divergence: its line, label, colour, grade, quality, confluence, entry pricewritten once at registration from closed-bar state
A resolved outcome and its win/loss/expired taglatched; scanning resumes from ScannedTo
A crossover marker on a closed baranchored on a bar open time, built once, back-filled in order
An alert already firedper-source-index latches; the history pass cannot fire alerts at all

2.6 History reloads, symbol switches, reconnects

The indicator subscribes to the source series' Reloaded and HistoryLoaded events (once per series, de-duplicated by reference, because a confluence level can legitimately point at the very same series as the primary source) and additionally compares the source bar count on every Calculate. Either trigger sets a rebuild flag, and the next pass runs RebuildAfterHistoryChange:

  1. Re-derive the timeframe geometry (bar spans), because everything below maps indices through it.
  2. Invalidate and re-sync the primary pipeline; invalidate and re-sync every confluence level.
  3. Clear pivots, divergences (removing their chart objects first), cross markers, the volatility model, the deduplication slots and every alert latch — including the confluence sign latch and any deferred alert.
  4. Reset the learning counters. They are a statistic of the records that were just discarded; keeping them would count the same market events again on every reload and inflate the sample counts.
  5. Rewrite the whole output series (RecomputeAllOutputs), because historical chart bars are never visited again by Calculate — merely clearing them would strand every marker older than the live edge.
  6. Re-arm the history pass, so a crossover that already happened while loading cannot fire an alert afterwards.
Tip If your terminal reconnects often, keep Auto Load History = true: the indicator requests more bars in a bounded loop (at most 12 attempts, stopping as soon as a request returns nothing) until the resolved profile's warm-up requirement is met, so a deep reload does not leave you with a half-computed oscillator.

2.7 Cost model

OperationCostNote
One tick on the forming barO(1) per simple-MA window, O(period) per recursive/composite kernelThe rolling-sum cache remembers the source value at the cached index, so re-evaluating the same bar swaps one window member instead of re-summing; the cache is re-derived exactly every 1024 incremental steps so drift cannot accumulate
Volume-price-adjusted inputO(VP Window) per tick that actually movedMemoised on every input of the forming bar, so a stream of redundant ticks costs O(1); this is the heaviest price input and the panel shows which one is active
Outcome trackingO(bars) over the whole historyIncremental via ScannedTo; never rescans a resolved horizon
Pivot scanO(lookback) per newly confirmable barEach bar is scanned once; the watermark advances
Marker back-fill after a reloadbounded by DrawRecentBars + 2 × MaxCrossMarkers barsOlder markers would be trimmed immediately anyway; trimming also runs inside the walk
Panelthrottled to Panel Refresh (ms)and only rebuilt when dirty or on a size change
Trendline redrawthrottled: every max(10, 2 × Trendline Min Pivot Gap) closed bars, and immediately on a re-anchor or a break (§14.3)
Plan extension / trail refreshonce per closed chart bar, gated on each plan's own source-freshness watermark; bounded by Max Visible Trade Plans (§13.6)
Session-marker sweepadvances over newly closed chart bars only, inside Marker Window, hard-capped at 1500 objects (§15.3)
Journalone log line per live event; a history rescan emits nothing (§16.2)

3. Timeframe Resolution & the Adaptive Engine

3.1 How the source timeframe is resolved

Source Timeframe offers CurrentChart, twelve fixed timeframes (M1, M5, M15, M30, H1, H2, H4, H6, H12, D1, W1, MN) and Custom. Every name is resolved through the platform's own parser (TimeFrame.Parse) rather than a hard-coded table, so the set of usable timeframes can never drift from what the running build of cTrader actually supports.

Custom Timeframe Name accepts, in this order of attempts:

  1. a canonical platform name — Minute15, Hour4, Renko10, Range50, Tick1000…
  2. trader shorthand — M1…M10080, H1…H24, D1…D7, T1…T1000, W/W1, MN/MN1/MO, RENKOn, RANGEn;
  3. Heikin-Ashi variants of any of the above — HeikinH4, HeikinAshiMinute15…;
  4. the literal words current / chart, which mean “use the chart”.

Case, spaces and punctuation are ignored. A name the platform rejects falls back to the chart timeframe and is reported: WARNING: Custom Timeframe '…' is not a timeframe this platform recognises, with the list of valid forms. With Debug Log on, the exact reason the parser refused is printed too — useful for telling “my spelling was wrong” from “this build has no such timeframe”.

3.2 How the bar duration is measured

The scaling law needs the bar duration in minutes. TimeFrame.Size is internal to the platform API, so the duration is derived from the timeframe's public name, with an empirical fallback:

Timeframe kindDuration source
Time-based (M/H/D/W/MN), including Heikin-Ashi variantsExact, parsed from the name: MINUTEn → n, HOURn → 60n, DAILY → 1440, DAYn → 1440n, WEEKLY → 10080, MONTHLY → 44640 (31 days, exactly the platform's own value). The full HEIKINASHI prefix is stripped before parsing, so a Heikin-Ashi chart keeps the exact duration of its base timeframe
Tick / Renko / Range / customEmpirical: the median of up to 2000 recent open-time deltas (deltas ≤ 0 or ≥ 40 days discarded, fewer than 4 samples → “unknown”). The median is used untrimmed on purpose: it tolerates up to 50% contamination, weekend gaps are a handful of samples, and trimming the upper tail would bias the estimate low on a genuinely sparse series, where long deltas are real bar durations
UnknownThe H1 anchor (60 minutes) is assumed, and the mapping code sets a “spans unknown” flag so strict mapping degrades gracefully instead of guessing
Consequence for tick / renko / range charts On those charts the bar duration is a statistical estimate, not a constant — which is honest, because a tick bar genuinely does not have a duration. Everything derived from it (periods, windows, the chart→source mapping) inherits that approximation. If you need exactness, use a time-based source timeframe; the indicator will happily run on a renko chart while computing on Source Timeframe = Hour.

3.3 The scaling law

One formula, no lookup tables. With D = source bar duration in minutes, Dref = 60 (H1), ε = Microstructure Noise Horizon (min), δ = the horizon exponent of Timeframe Scaling:

N(D) = N_ref * ( (1 + eps/D) / (1 + eps/D_ref) ) ^ (gamma/2) * ( D_ref / D ) ^ delta gamma = 1 (fixed; the exponent applied is gamma/2 = 0.5) delta = 0.00 Timeframe Scaling = BarCount (constant bar count) delta = 0.15 Timeframe Scaling = Balanced (default: a mild tilt toward longer periods on fast charts) delta = 1.00 Timeframe Scaling = TimeHorizon (constant wall-clock horizon) scale is then clamped to [floor, Max Period Multiplier]: floor = 1.00 High Timeframe Policy = Canonical (never shrink below the reference set at/above H1) floor = 0.35 High Timeframe Policy = HorizonMatched (allow shrinkage, but not below a reliability floor)

The two terms do different jobs. The noise term keeps the statistical reliability of the smoothed difference constant: per-bar variance is σ²·D + σ²eps, so the number of bars that must be averaged to reach a fixed signal-to-noise ratio grows as sqrt(1 + eps/D). The horizon term moves the indicator between “constant bar count” (δ = 0) and “constant wall-clock horizon” (δ = 1). The default δ = 0.15 exists because the noise term alone under-corrects in practice on fast charts.

A period is then scaled with a per-parameter exponent, because not every parameter is horizon-driven: ScaleBars(ref, scale, exponent, min, max, gain) computes round(ref × scaleexponent × gain) and clamps to [min, max]. The gain is 1 / Global Sensitivity, which is why sensitivity divides periods: 2.0 gives half the periods (twice as fast), 0.5 doubles them, and the label agrees with the effect on every timeframe.

ExponentParametersReasoning
1.00Fast, Slow, Signal periodspure horizon quantities — they follow the scale fully
0.80Trend EMA perioda context filter: mostly horizon, partly statistical
0.60Pivot lookback, VP windowdamped on purpose. The lookback exponent is deliberately higher than the distance windows' so that the ratio MinPivotDistance / PivotLookback does not collapse on slow charts, where a bare 0.50/0.50 pair would confirm pivots after two bars and admit visibly noisier divergences
0.50Min/Max pivot distance, trend slope bars, outcome horizon, draw-recent window, stats window (the last two use 1/scale, i.e. they grow on slower charts)market-phenomena windows: they should stretch with the timeframe, but sub-linearly
0.40RSI, ATR, ADX, Efficiency-Ratio periodsstatistically driven; they barely need to move with the timeframe

Two thresholds are scaled as values rather than bar counts:

Min ATR % = MinAtrPercent_ref * sqrt( BarMinutes / 60 ) clamped to [0, 5] Max Counter-Trend Slope = MaxCounterTrendSlope_ref * sqrt( TrendSlopeBars_ref / TrendSlopeBars_resolved ) clamped to [0.005, 2]

The first follows the diffusion of ATR-as-a-percent-of-price with the square root of bar duration; the second keeps the slope gate statistically comparable when the number of bars it is measured over changes.

3.4 Wall-clock caps (automatic mode only)

Bar counts are the natural unit for oscillator periods, but windows that describe a market phenomenon must not grow without bound on slow charts — a 60-bar outcome horizon on a monthly chart is five years, which no trader will ever see resolved. Each is capped by BarsForDays(days, barMinutes, floor):

QuantityCapFloor of the cap
Trend EMA period730 days10 bars
Max pivot distance730 days20 bars
Min pivot distance180 days3 bars
Outcome horizon120 days10 bars
Stats window365 days25 bars
Draw-recent window1095 days100 bars

3.5 Derived quantities you cannot set directly

QuantityFormulaUsed by
NormWindowclamp(Slow × 4, 40, 600)the rolling mean absolute MACD (the oscillator's yardstick) and the rolling mean absolute histogram (the early-entry unit)
VolWindowclamp(BarsForDays(10 days), 150, 3000)the volatility baseline of the adaptive ATR gate — about ten trading days: long enough to average out the intraday cycle, short enough to track a regime change
ErSmoothingclamp(ErPeriod × 2, 5, 100)the raw efficiency ratio is far too twitchy to drive a blend on its own
Filter bank legsResponsive = round(period × (1 − spread)), Smooth = round(period × (1 + spread)), each floor-guarded so fast ≥ 2 and slow > fastthe two MACD instances of the regime-adaptive bank
Quality biasclamp(0.20 × log2(60 / BarMinutes), −0.10, +0.10) applied to Min/Weak/Alert qualityfast charts are noisier, so the bar rises slightly; slow charts relax slightly. Bounded to ±10% so your own setting always dominates

3.6 What the defaults actually resolve to

Computed with the shipped defaults (Adaptation = Automatic, Timeframe Scaling = Balanced, ε = 1.0 min, Global Sensitivity = 1.0, High Timeframe Policy = Canonical, Filter Bank Spread = 0.35, reference set 12/26/9). This is the same arithmetic the indicator performs at start-up and prints to the log — reproduced here so you can see the curve rather than trust it.

TFmin/barscaleMACD f/s/sigpivot lbdist min–maxRSI / ATR trend EMAslopehorizonVP winnorm winvol winstats min ATR%Q min/weak
M112.59231 / 67 / 23918–16120 / 20107897352683000620.006555.0 / 71.5
M551.57719 / 41 / 14714–12617 / 1772675261642880800.014455.0 / 71.5
M15151.26115 / 33 / 11612–11215 / 156066723132960890.025055.0 / 71.5
M30301.11913 / 29 / 10510–10615 / 155556321116480950.035455.0 / 71.5
H1601.00012 / 26 / 9510–10014 / 1450560201042401000.050050.0 / 65.0
H42401.00012 / 26 / 9510–10014 / 1450560201041501000.100045.0 / 58.5
D114401.00012 / 26 / 9510–10014 / 1450560201041501000.244945.0 / 58.5
W1100801.00012 / 26 / 9510–10014 / 145051820104150530.648145.0 / 58.5
MN446401.00012 / 26 / 9510–2414 / 142451020104150251.363845.0 / 58.5
Reading the table From H1 upward the Canonical policy pins the scale at 1.0, so D1/W1/MN run the classic 12/26/9 — exactly what daily and weekly traders expect and what the literature is calibrated on. Only the wall-clock caps move (outcome horizon, stats window, draw window). Switch High Timeframe Policy to HorizonMatched and the same charts start shrinking their periods toward a comparable wall-clock horizon, down to the 0.35 reliability floor. Below H1 the noise term does the work: M1 runs 31/67/23, not 12/26/9, because averaging 26 one-minute bars does not deliver the same signal-to-noise ratio as averaging 26 hourly bars.
Tip Set Timeframe Scaling = BarCount together with Microstructure Noise Horizon = 0 and the scale becomes exactly 1.0 on every timeframe: you then get the reference periods verbatim everywhere, which is the useful baseline when you want to compare this product against a plain MACD.

3.7 Invariants that hold in both modes

InvariantAction takenReported?
Fast ≥ Slowthe pair is swapped, not flattened — widening the slow leg would hand you a 50/51 oscillator, technically valid, almost perfectly flat, and nothing like what you asked foryes, with the resolved triple
Slow ≤ Fast after a swapSlow = Fast + 1covered by the swap warning
leg ceilingsFast ≤ 500, Slow ≤ 1000, Signal ≤ 300 — identical to the MaxValue declared on each parameter, so a value the dialog accepts is never silently rewrittenyes, if exceeded
MinPivotDistance < 2 × PivotLookbackraised to 2 × PivotLookback: two pivots closer than twice the confirmation window are usually one swing split in two—
MaxPivotDistance ≤ MinPivotDistanceraised to MinPivotDistance + 10yes, if you inverted them
WeakQuality < MinQualityraised to MinQuality so the two bands cannot overlapyes
manual mode, any parameterevery clamp mirrors the declared range; anything that still differs is printed at start-upyes — WARNING: X = a was resolved to b

3.8 Manual mode

Adaptation Mode = Manual honours every dialog value verbatim, clamped only to the range the parameter itself declares. Nothing is scaled, no wall-clock cap applies, and the quality thresholds are taken as written (the scale-free bias of §3.5 is an automatic-mode feature). The derived quantities of §3.5 are still derived — they are not parameters — and the invariants of §3.7 still hold, because they protect against configurations that cannot mean what they say.

4. Trading Styles

Trading Style is the master switch and sits first in the dialog on purpose. It is the orthogonal axis to timeframe: it sets everything a timeframe cannot tell the engine, and it deliberately does not touch the timeframe. That is what makes one style work on M1 and on H1 alike — the adaptive engine keeps doing its job underneath.

4.1 Universal (default)

Writes nothing. Every parameter is whatever you set, and the start-up note about a style being active is not printed.

4.2 Scalping

Writes 134 of the 162 parameters, in one pass, before anything is resolved — 47 of them differ from the Universal defaults, and §32.8 lists every one of them. The design intent, group by group:

GroupWhat the style decides
AdaptationAutomatic + BarCount scaling (shortest bar counts) + HorizonMatched high-timeframe policy + Global Sensitivity 1.6 (periods ÷ 1.6) + noise horizon 1.0 min + filter bank on with spread 0.30
Sourcestrict MTF mapping, auto history load, Min Source Bars 1500. The timeframe itself is never touched — that is the point of the style
Confluenceon, 2 levels, derived ladder, soft gate centred above neutral (Min Confluence Score 60): a scalp against the higher timeframe is still allowed but must earn a materially higher quality score
OscillatorHull kernel (zero group delay) on the volume-price-adjusted input with a 12-bar reference window, signal line following the MACD kernel (keeping the crossover symmetric — an EMA signal under a Hull MACD would put half the signal period of lag straight back in), Lambda 0.92 so the trigger fires while the histogram is still closing the last 8% of its distance to zero, raw output scale
Divergencesregular + hidden, prominence 0.55 ATR (many pivots, few of them noise), price leg ≥ 1.0 ATR, oscillator leg ≥ 0.18 RMS, up to 10 candidates searched, zero-line rule and both confirmations armed, up to 30 drawn
Gatesevery precision gate armed: trend filter with a 0.12 ATR/bar counter-trend limit, adaptive ATR floor at the 25th percentile of the symbol's own distribution, ADX ≥ 18, volatility-spike, momentum, cluster suppression, post-pivot follow-through ≥ 0.55 (the turn must actually be underway), session from the symbol's own calendar with a 07–20 UTC fallback window
Qualityfloor 60, weak below 72, alerts from 76 — a higher bar than Universal, because a scalping hold is short enough that a marginal signal costs the same spread as a good one
Learningon, 200-outcome memory, armed after 10 resolved samples, persisted, target 1.0 ATR against a 1.2 ATR stop — a scalping hold time, not a swing one
Markerscrossovers drawn as arrow + text (BUY/SELL), 9px, 0.9× oscillator-scale clearance, live (not closed-bar-only, because scalpers act inside the bar), zero-line crosses off, 150-marker budget
Appearancedivergences as line + markers with quality in the label and no grade, no drop lines (keep a busy fast pane readable), no mirror on the price chart, 2px lines
Panelone fused card, left/bottom, native controls, 11px, 0.92 opacity, 6px margin, 200 ms refresh, configuration section off (the configuration is the style)
Alertsall on except zero-line crosses; closed-bar-only off; sound, log and popup all enabled
The style owns the parameters below it While Trading Style = Scalping, editing any of those 95 parameters has no effect: the preset rewrites them on every initialisation. This is printed at start-up (“individual parameter values shown in the dialog are the ones the 'SCALPING' style wrote”). To fine-tune, set the style back to Universal first — the values the style wrote stay in the dialog, so you keep its choices as your starting point.
Scalping-style configuration: Hull kernel, VP-adjusted input, divergences and BUY/SELL markers
The Scalping style's oscillator core: the Hull kernel on the volume-price-adjusted input, with the crossover markers, the divergence layer and the fused info panel that the style configures.

4.3 Swing

The balanced classic configuration for H4–D1 work: the Appel 12/26/9 triple on the close, the filter bank off (a swing horizon does not need the responsive/smooth blend), a slightly longer lambda (0.96) so the early-entry band is a nudge rather than a trigger, structure stops and the default 1R / 2R plan, and a session gate taken from the symbol's own calendar. It pins 134 parameters, of which 17 differ from the Universal defaults:

ParameterUniversal defaultSwing writes
Timeframe & Source
Min Confluence Score25.035.0
Min Source Bars8001200
MACD Core
Signal Sensitivity Lambda1.00.96
Automatic Adaptation
Regime-Adaptive Filter Banktruefalse
Filter Bank Spread0.350.25
Divergence Detection
Pivot Prominence (x ATR)0.350.40
Max Pivot Candidates68
Signal Filters
Adaptive ATR Percentile20.015.0
Session FilterOffAuto
Min Quality Score50.055.0
Weak Signal Threshold65.068.0
Quality & Learning
Learning Memory (outcomes)120150
Outcome Target (x ATR)1.01.5
Signal Markers
Mark Only Closed Barsfalsetrue
Alerts
Alert Cooldown (source bars, 0 = off)03
Alert Min Quality70.072.0
Trade Management
Projection Length (chart bars)120150
Tip Swing is the style to reach for when you want the indicator to behave like a textbook MACD with modern gates: it changes almost nothing about the oscillator itself and spends its budget on selectivity (Min Quality Score 55, Alert Min Quality 72) and on plan geometry (Projection Length 150 chart bars).

4.4 Position

The slow, maximally selective configuration for W1–MN work. It moves the references themselves (18/39/12, RSI 20, ATR 20, trend EMA 100), switches the scaling law to TimeHorizon with HorizonMatched high-timeframe policy so a weekly chart measures a comparable wall-clock horizon, keeps regular divergences only (a hidden continuation pattern on a monthly chart is a different trade than the one this style is for), demands a bigger price leg (1.5 ATR) and a longer outcome horizon (120 bars, 2.0 ATR target and stop), and turns the confluence ladder into a hard gate with three rungs at Min Confluence Score 45. Plans are wide (1.5R / 3.0R, buffer 0.75 ATR, trail 4.0 ATR, at most 2 visible), crossover markers are off — on a weekly chart a cross is noise next to a grade-A divergence — and so are the session markers. It pins 134 parameters, of which 61 differ from the Universal defaults:

ParameterUniversal defaultPosition writes
Timeframe & Source
Confluence Levels (higher TFs)23
Confluence GateSoftPenaltyHardGate
Min Confluence Score25.045.0
Min Source Bars8001000
MACD Core
Fast Period (reference / manual)1218
Slow Period (reference / manual)2639
Signal Period (reference / manual)912
VP Window (bars, reference / manual)2030
Automatic Adaptation
Timeframe ScalingBalancedTimeHorizon
Global Sensitivity1.00.85
Regime-Adaptive Filter Banktruefalse
Filter Bank Spread0.350.25
Efficiency Ratio Period1014
Max Period Multiplier3.04.0
High Timeframe PolicyCanonicalHorizonMatched
Divergence Detection
Divergence KindsRegularAndHiddenRegularOnly
Pivot Lookback (reference / manual)57
Pivot Prominence (x ATR)0.350.30
Min Pivot Distance (reference)812
Max Pivot Distance (reference)100200
Min Price Leg (x ATR)0.751.5
Min Oscillator Leg (x RMS)0.100.15
RSI Period (reference / manual)1420
Max Drawn Divergences2515
Draw Only Most Recent N Bars15002000
Signal Filters
Trend EMA Period (reference / manual)50100
Trend Slope Bars (reference / manual)58
Max Counter-Trend Slope (ATR/bar)0.150.20
ATR Period (reference / manual)1420
Adaptive ATR Percentile20.010.0
Fixed Min ATR % (reference at H1)0.050.10
Use ADX Filterfalsetrue
ADX Period (reference / manual)1420
Require Post-Pivot Follow-Throughfalsetrue
Min Follow-Through (0-1)0.50.60
Min Quality Score50.065.0
Weak Signal Threshold65.078.0
Quality & Learning
Min Learning Samples1215
Outcome Horizon (reference)60120
Outcome Target (x ATR)1.02.0
Outcome Stop (x ATR)1.52.0
Signal Markers
Show Cross Signalstruefalse
Mark Only Closed Barsfalsetrue
Divergence Appearance
Label WordingPlainFull
Show Grade (A/B/C) In Labelfalsetrue
Line Thickness23
Info Panel
Stats Window (bars, reference / manual)100150
Panel Refresh (ms)250500
Alerts
Alert: MTF Confluence Flipfalsetrue
Alert Cooldown (source bars, 0 = off)06
Alert Min Quality70.082.0
Trade Management
Plan TP1 (R multiple)1.01.5
Plan TP2 (R multiple)2.03.0
Pivot Stop Buffer (x ATR)0.50.75
Max Visible Trade Plans32
Projection Length (chart bars)120240
Trailing Stop (x ATR chandelier)3.04.0
MACD Trendlines
Trendline Min Pivot Gap (reference / manual)58
Trendline Max Slope (x RMS/bar)0.250.15
Trendline Break Threshold (x RMS)0.100.12
Session Markers
Show Session Markerstruefalse
Position is the strictest style in the set Between the hard MTF gate, Min Quality Score 65, the 1.5 ATR price leg, the ADX filter and the follow-through requirement, quiet weeks can legitimately produce no signals at all. That is the design: this style trades rarely and expects to be right about the higher-timeframe context. If you want more output, use Swing and tighten it by hand (§31).

5. The MACD Core

5.1 Structure

The core is a single self-contained class instantiated once for the source timeframe and once per confluence level, so the indicator behaves identically on every timeframe — each instance with its own automatically derived profile. Every kernel in it is a strictly causal recursion: the value at index i depends only on inputs at ≤ i and on already-computed outputs at < i. That property is what makes an exact incremental update possible, so re-evaluating the forming bar on every tick reproduces exactly what a full recomputation would produce — no drift, no O(history) rescan.

5.2 Price inputs

Price InputFormulaCharacter / when to use it
Close (default)CThe classic. Comparable to any other MACD you have used
Typical(H + L + C) / 3damps single-tick wicks; a reasonable default on noisy feeds
Weighted(H + L + 2C) / 4typical, tilted toward the close
Median(H + L) / 2ignores where inside the bar the market closed; smoothest, most lagging
HeikinAshi(O + H + L + C) / 4 — or plain C when the source timeframe is already Heikin-Ashitrend-continuation view. The double-transform guard matters: transforming Heikin-Ashi candles again would compound the smoothing into mush
VolumePriceAdjustedsee belowthe VP-MACD input of arXiv:2604.26063. Best on fast timeframes where the dominant failure is a low-participation wick faking a crossover

The volume-price-adjusted input, step by step:

per bar i: sigma_i = (H_i - L_i) / C_i relative volatility body_i = |C_i - O_i| / (H_i - L_i) directional conviction of the candle (both averaged over max(3, VP Window) bars -> sigmaBar_i, bodyBar_i) weight_k = volume_k * clamp(sigma_k / sigmaBar_i, 0.25, 4) * clamp(body_k / bodyBar_i, 0.25, 4) price_i = SUM(weight_k * C_k) / SUM(weight_k) over k in [i - VP Window + 1, i]

This is the scale-preserving form of the paper's idea: σ and the body ratio are normalised against their own rolling means and used as conviction weights, not as multiplicative price factors. The adjusted series therefore stays in price units and the resulting MACD remains directly comparable to the classic one — which matters, because every threshold in the divergence engine is denominated in ATR or in the oscillator's own RMS. Robustness details: a bar with no usable price contributes nothing rather than poisoning the average; volume that is missing, zero or negative is folded onto the neutral 1.0; and the whole scan is memoised on the forming bar's inputs, so a stream of ticks that change nothing costs O(1).

Cost VolumePriceAdjusted is the heaviest input: its window scan cannot be reduced to O(1) per tick, because both conviction factors are ratios against rolling means that move with the forming bar. On a deep history the difference is measurable; on a live chart the memo absorbs most of it. The panel's Input row always tells you which one is active.

5.3 The kernel library

Ten moving-average kernels, each implemented from its definition (composite kernels are compositions of primitive ones, which keeps them provably consistent). “Warm-up” is the number of bars before the first non-NaN output — the same quantity EstimateWarmupBars uses to warn you about insufficient history.

KernelDefinitionWarm-upCharacter
Exponential (default)EMA_i = EMA_{i-1} + α(x_i − EMA_{i-1}), α = 2/(n+1), seeded with the SMA of the first windownthe classic Appel MACD. Smooth, predictable, one well-understood lag
HullHMA(n) = WMA( 2·WMA(n/2) − WMA(n), round(sqrt(n)) )n + round(sqrt(n))zero group delay with minimal overshoot — the fastest usable kernel. Degenerate periods stay well defined (HMA(2) = (4P_i − P_{i-1})/3)
KaufmanAdaptiveKAMA: ER = |x_i − x_{i-n}| / Σ|Δx|, SC = (ER·(2/3 − 2/31) + 2/31)², then KAMA_i = KAMA_{i-1} + SC(x_i − KAMA_{i-1})n + 1fast in trends, nearly flat in chop. Needs one extra bar because ER needs n changes
DoubleExponentialDEMA = 2·EMA(n) − EMA(EMA(n), n)2none de-lag stage; less overshoot than Hull
TripleExponentialTEMA = 3E1 − 3E2 + E3 over three cascaded EMAs of period n3ntwo de-lag stages; the most aggressive of the exponential family
TimeSeriesleast-squares straight line through the last n samples, evaluated at the newest onenthe platform's “Time Series” MA. Reacts to slope rather than level; can overshoot on spikes
Weightedlinearly weighted mean, weights n…1nless lag than SMA, more noise than EMA
TriangularTRIMA(n) = SMA( SMA(x, n/2+1), n/2+1 )2·(n/2+1)double-smoothed: very quiet, visibly late. Useful as the smooth leg of a filter bank
Simplearithmetic mean of n barsnno weighting; the reference against which the others are judged
WilderRMA: α = 1/nnWilder's own smoothing (RSI/ATR family). Slower than EMA at the same period, so a 26-period Wilder leg behaves like a longer EMA

Two implementation details worth knowing, because they are the difference between an indicator that survives a bad bar and one that goes blank:

Which kernel? Exponential for anything you want comparable to literature or to another platform. Hull for scalping and for fast charts generally (it is what the Scalping style picks). KaufmanAdaptive when the instrument alternates hard between trend and chop and you want the oscillator to admit it. Wilder when you want the classic look with the RSI/ATR family's smoothing convention. Triangular when you are using the oscillator as a slow context line rather than as a trigger. Section 19 shows all nine side by side on the same chart.

5.4 The signal line's own kernel

The signal line is a moving average of the MACD line, and its kernel is a separate choice (Signal Line MA Type):

ChoiceEffect
SameAsMacdLine (default)the historic behaviour: the signal line uses whatever kernel the two MACD legs use. Keeps the crossover symmetric — both sides of the difference have the same phase — which is what a zero-lag kernel wants
Exponentialthe classic Appel definition (signal = EMA of MACD) regardless of the legs. Pairing it with a de-lagged MACD line makes crossovers later but smoother, because the signal lags by roughly (n−1)/2 bars while the MACD line does not
any other kernelan explicit asymmetry you chose; the resolved pair is printed in the log and shown in the panel (SigKernel row) whenever the two differ
Rule of thumb De-lagged MACD legs want a de-lagged signal (symmetry). Lagging MACD legs want an EMA signal (the classic). Mixing a Hull MACD line with a Wilder signal produces a crossover whose timing is dominated by the mismatch, not by the market.

5.5 The regime-adaptive filter bank

With Regime-Adaptive Filter Bank = true (default) and a non-zero Filter Bank Spread (default 0.35), the MACD line is not one oscillator but a bank of two, mixed by the market's own regime:

responsive legs = Fast * (1 - spread) , Slow * (1 - spread) (default: 8 / 17) smooth legs = Fast * (1 + spread) , Slow * (1 + spread) (default: 16 / 35) w_i = smoothed Kaufman Efficiency Ratio, clamped to [0, 1] (0.5 while it warms up) MACD_i = w_i * MACD_responsive_i + (1 - w_i) * MACD_smooth_i

w → 1 means an efficient, trending regime, where the responsive leg should dominate; w → 0 means chop, where the smooth leg suppresses the whipsaw. The raw ER is far too twitchy to drive this on its own, which is why it is smoothed over 2 × ER Period bars (a derived quantity, §3.5).

Warm-up semantics The blend is defined only once both legs are defined. Substituting whichever leg warmed up first would inject a short stretch of values from a different filter into the normalisation window, into the early-entry band and into the crossover latch — a scale discontinuity exactly where a first crossover is most likely to be fabricated. The cost is a slightly later start (about spread × Slow bars, ~18 at the defaults), which the warm-up warning already accounts for because it counts the deeper leg.

The confluence ladder runs with the bank off at every level, by design: the ladder reports direction, not responsiveness, and a regime-mixed score would be hard to compare across timeframes.

5.6 Signal Sensitivity Lambda and the crossover latch

Signal Sensitivity Lambda ∈ [0.80, 1.00] controls how early a crossover is announced. At λ = 1 (default) the band collapses to zero and the latch reproduces the classic crossing exactly. Below 1, the trigger is advanced to the bar on which the histogram climbs out of the band on its way to a crossing:

band_i = (1 - lambda) * HistUnit_i HistUnit_i = rolling mean |histogram| over NormWindow bars, or - while that mean is still warming up - the mean |histogram| over whatever bars DO exist (it converges to the rolling mean exactly)

The unit matters. Measuring the band in the oscillator's own mean absolute histogram is what makes λ mean the same thing on M1 and on W1, on EURUSD and on Bitcoin: λ = 0.92 always means “trigger once the histogram has closed 8% of its typical distance to zero”. This is also why λ is deliberately not part of the adaptive profile — scaling it on top of an already scale-free quantity would adapt it twice.

Two rules keep the advance honest:

  1. Direction. An early trigger may only fire in the direction the histogram is leaving, never the one it currently occupies — otherwise the latch would flip back on the next bar and emit BUY/BUY or SELL/SELL pairs out of pure noise inside the band.
  2. Consumption. An early trigger is consumed by the crossing it anticipated, so the crossing itself does not emit a second one.

The result is exactly one trigger per oscillator excursion. That cannot be guaranteed by a local two-bar test once the band is wider than zero: the bullish band edge (−band) then sits below the bearish one (+band), so the two conditions overlap and a difference that dwells inside the band and then crosses zero satisfies neither. The latch is a strict causal recursion, so re-evaluating the forming bar reproduces exactly what a full recomputation would produce.

Three further details of the latch, each of which prevents a specific class of phantom signal:

5.7 Output scale and gain

Output Scale chooses the units the plotted series is expressed in; Output Gain (0.05–50) is a plain multiplier applied on top. Every plotted value — MACD, signal, all four histogram buckets, both trigger series and both divergence series — goes through the same conversion, so the pane stays self-consistent.

ModeDivisorWhat it is for
Raw (default)1price units. Directly comparable to any other MACD; the natural choice when you read the histogram against price levels
AtrNormalizedATR of that bar — and, while the platform ATR is still warming up, the mean true range of the bars that do existvolatility-normalised. Makes one symbol's oscillator comparable to another's, and stops a volatility regime change from looking like a momentum change. The warm-up fallback exists so the left edge of the pane is not plotted in raw units next to bars plotted in ATR units (a factor of ~104 on FX: a spike that flattens into the real series with a visible step)
SelfNormalizedthe rolling mean absolute MACD of that bar (Scale)self-normalised: the oscillator measures itself against its own recent magnitude, so “big” means “big for this instrument recently”
Divergence lines in normalised modes Each end of a divergence line is divided by its own bar's divisor, so the line touches the plotted extremes it connects. The detector, separately, measures the oscillator leg against the scale at the new pivot, because a dimensionless leg needs one measuring stick. Display and detector answer two different questions; in Raw mode (the default) both divisors are 1 and the distinction disappears.

5.8 The four histogram buckets

The histogram is not one series but four, so that momentum quality is visible as colour rather than as a number you have to compute in your head. A bar is strong when the histogram is both expanding (|H_i| > |H_{i-1}|) and at or above its own average size (|H_i| ≥ HistScale_i):

BucketConditionDefault colour
Hist Bull StrongH ≥ 0 and strongbright green #00E676
Hist Bull WeakH ≥ 0, not strongmuted green #3E7D55
Hist Bear StrongH < 0 and strongbright red #FF1744
Hist Bear WeakH < 0, not strongmuted red #8E4450

All four buckets are cleared before every write, so a live bar whose classification flips between ticks can never leave two buckets populated for the same bar. The panel's Momentum (BUILDING / FADING / STEADY) and Strength (STRONG / NORMAL / WEAK) rows are the same two tests, spelled out.

6. The Divergence Engine

6.1 The path from a bar to a drawn signal

  1. Confirm a pivot. Every source bar that has just become confirmable is tested for a significant fractal pivot (§6.2). “Confirmable” means its right-hand window consists only of closed bars.
  2. Search the pool. The new pivot is paired against every older pivot of the same side inside [MinPivotDistance, MaxPivotDistance], up to Max Pivot Candidates pairings, and each pairing is scored. The strongest one wins — this is the single largest accuracy improvement available to a pivot-based detector, because divergences that span an intermediate pivot are no longer missed (§6.3).
  3. Classify and grade. Regular or hidden, bullish or bearish, A/B/C, with the zero-line rule and the two confirmations applied on the way (§6.4–6.5).
  4. Run the hard gates at the confirmation bar (§6.6). A rejection is logged with its reason when Debug Log is on.
  5. Score the quality — thirteen weighted components, 0–100 (§6.7). Below Min Quality Score the candidate is dropped and the drop is logged.
  6. Register an immutable record, claim the de-duplication slot, draw it if it is inside the drawing window, place the trigger marker at the confirmation bar, mark the panel dirty and raise the alert if the quality clears the alert bar (§6.8).
  7. Track the outcome on closed bars only, and feed the family's win rate back into future quality scores (§7).
Canonical state advance — why the scan order matters Divergences run before the confluence, volatility and outcome updates in the per-bar pipeline, because the pivot scanner advances those three states itself, to the exact point they would have been at when that pivot confirmed. Live, a pivot at bar c registers on the first tick of source bar c + lookback + 1, at which moment confluence reflects bar c + lookback + 1, the volatility model has consumed bar c + lookback and the outcomes have resolved up to c + lookback − 1. A bulk history pass confirms several pivots in one call, so without this per-confirmation advance every registration would read end-of-batch state instead — and quality scores, therefore which divergences pass at all, would differ between the live pass and any recompute. With it, the two are identical. The calls are watermark-guarded, so the total cost is unchanged.

6.2 Pivot detection

A pivot at bar c is a fractal extremum over Pivot Lookback bars on each side, filtered by prominence.

TestRuleWhy
Confirmation windowpublished only once bar c + lookback has closed; the scanner's right edge is min(currentSourceIndex, Count−2) − lookbackthe anti-repaint contract. A pivot confirmed with the forming bar could appear mid-bar and survive after that bar exceeded the “pivot” extreme — the exact repaint the design forbids
Extremum, left sideno bar in [c−lookback, c−1] strictly beyond the centreties on the left are tolerated
Extremum, right sideno bar in [c+1, c+lookback] at or beyond the centreties on the right are not tolerated, which resolves a plateau to exactly one pivot instead of emitting a duplicate for every equal bar
Prominencehigh: extreme − max(deepest trough left, deepest trough right); low: min(highest peak left, highest peak right) − extreme; must be > 0 and, when ATR is known, ≥ Pivot Prominence (x ATR)the ZigZag-style significance test. This is what removes the micro-pivots responsible for most false divergences on fast timeframes
Oscillator availablethe MACD value at the pivot must not be NaNa pivot inside the warm-up window has nothing to diverge from
NaN in either windowthe pivot is not evaluateda truncated window is not a slightly-wrong extremum, it is a wrong one

Each pivot record carries its index, open time, extreme price, MACD, histogram, RSI and prominence in ATR units. Confirmed pivots are kept per side in a pool whose capacity follows the resolved profile:

PivotMemory = max(400, MaxPivotDistance + 2 * PivotLookback + 16)

It must comfortably exceed the maximum pivot separation, otherwise the multi-candidate search would silently lose its oldest candidates — which is why it is derived rather than a fixed constant.

ATR for prominence comes from the platform's own ATR indicator on the source series; while that is still warming up, the mean true range of the bars that do exist is used instead, so pivots found early are still measurable rather than being silently skipped.

6.3 Multi-candidate search and the pairing score

The pool is walked from the newest pivot backwards. A pairing is skipped when the distance is below MinPivotDistance; the walk stops when it exceeds MaxPivotDistance; at most Max Pivot Candidates pairings are evaluated. Every surviving pairing is assessed, and the one with the highest Score is taken forward. The score is a weighted sum, deliberately not normalised (it only ever compares candidates against each other):

Score = 2.0 * min(oscLegRms, 1.5) / 1.5 oscillator disagreement - the core of the pattern + 1.5 * min(priceLegAtr, 5.0) / 5.0 size of the price leg + 1.0 * min(mean prominence, 2.0) / 2.0 how well formed BOTH pivots are + 1.0 * DistanceFit(distance) separation membership (below) + 0.8 * RsiStrength (0.4 if RSI unknown) graded RSI agreement + 0.6 / 0.0 / 0.3 histogram agrees / disagrees / unknown + 0.7 / 0.45 / 0.2 grade A / B / C

DistanceFit is a trapezoidal membership function of the pivot separation — very tight pairs are usually one swing split in two, very wide pairs lose causal connection:

low = MinPivotDistance + 0.10 * (MaxPivotDistance - MinPivotDistance) high = MinPivotDistance + 0.60 * (MaxPivotDistance - MinPivotDistance) d <= low -> 0.45 + 0.55 * (d - Min) / (low - Min) (rises from 0.45 at the minimum) low < d <= high -> 1.0 (the plateau) d > high -> clamp(1 - (d - high) / (Max - high), 0.20, 1.0)

The confirmation bar of a candidate is min(pivot + PivotLookback, lastSourceBar) — the first bar on which the pivot could have been known. Everything below (gates, quality, entry price, alerts) is evaluated at that bar, never at the pivot.

6.4 Regular, hidden, and the A/B/C grade

A low pivot always produces a bullish signal and a high pivot a bearish one — for regular (reversal) and hidden (continuation) families alike. What differs is which leg moved against which:

PivotPriceOscillatorClassMeaning
Highhigher highlower oscillator highRegular bearishthe rally is not being confirmed by momentum — exhaustion
Highlower highhigher oscillator highHidden bearishmomentum is stronger than the shallow price pullback suggests — continuation down
Lowlower lowhigher oscillator lowRegular bullishthe sell-off is not being confirmed by momentum — exhaustion
Lowhigher lowlower oscillator lowHidden bullishmomentum is weaker than the shallow bounce suggests — continuation up

Divergence Kinds selects which families are allowed (RegularOnly, HiddenOnly, both by default).

The zero-line rule (Appel / Brown): with Require Zero-Line Match on, a regular bearish divergence must be built entirely above zero and a regular bullish one entirely below zero. Hidden divergences are exempt — the rule is about exhaustion at an extreme, and a continuation pattern is not one. The depth inside the correct zone is measured as ZoneDepth (in units of the oscillator's own scale, clamped to 0…3) and contributes to the quality score.

The grade separates genuine momentum exhaustion from a shallow diagonal:

toward = family-aware oscillator delta, normalised by the oscillator's scale: regular : high pivot -> (q - p), low pivot -> (p - q) (the fade) hidden : high pivot -> (p - q), low pivot -> (q - p) (the push) crossedZero = the two pivots sit on opposite sides of the zero line Grade A if crossedZero or toward >= 0.60 Grade B if toward >= 0.30 Grade C otherwise
Why the delta is family-aware Measuring hidden divergences with the regular-direction delta gives them a negative “toward” by construction, so no hidden divergence could ever reach the A or B thresholds and every one would be silently graded C. Class A means the oscillator not only disagrees but has turned back through zero — exhaustion, not geometry.

6.5 The two confirmations

ConfirmationApplies toBehaviour
RSI (Confirm With RSI, on by default)regular divergences only — a hidden divergence is a continuation pattern and RSI usually moves with price thereTwo jobs, kept separate. (1) When the switch is on it is a hard veto: a regular divergence whose RSI does not move in the signal's direction is rejected outright. (2) The agreement is additionally graded, always, whether or not the veto is armed: RsiStrength = 0.75 + 0.25·min(|ΔRSI|/10, 1) when it agrees, 0.25·(1 − min(|ΔRSI|/10,1)) when it does not. A decisive 10-point RSI turn scores exactly 1.0; a hair's-breadth tick scores 0.75. A binary flag would make the quality component a constant, because the veto has already removed every disagreement before the score is computed
Histogram (Confirm With Histogram, on by default)both familiesA quality factor, never a veto: the histogram also contains the signal line and can legitimately lag. Agrees → +0.6 in the pairing score and 1.0 in the quality component; disagrees → 0 and 0.25; unknown → 0.3 and dropped from the score

6.6 The hard gates, in the order they run

#GateRuleRejected with (Debug Log)
1Duplicate suppressionone signal per end pivot per family (4 slots: high/low × regular/hidden). The slot is claimed only on registration, so a candidate rejected by a later gate never blocks a better candidate on the same pivotduplicate end pivot
2Volatility floorATR as a percent of price at the confirmation bar must be ≥ the floor in force — the adaptive percentile of this symbol's own distribution, or the fixed reference value scaled by sqrt(barMinutes/60). AtrGateMode = Off disables itATR% x below floor y
3Trendslope of the trend EMA in ATR-per-bar units over Trend Slope Bars. Hidden (continuation): must not fight the trend — rejected when aligned < −limit. Regular (reversal): expected to appear against the trend, so only a parabolic move is treated as un-fadeable — rejected when aligned < −3×limithidden vs trend (x) / trend too strong to fade (x)
4ADXonly when Use ADX Filter is on. Hidden: needs a trend — ADX ≥ Min ADX. Regular: needs exhaustion — ADX falling over the slope window, or ADX ≤ Min ADX + 15ADX gate (x)
5Cluster / repeatrejected when an earlier divergence of the same direction ended within MinPivotDistance bars and its end price is within 1 ATR of the current close — i.e. this is the same event, re-detected one pivot laterclustered with a previous signal
6Follow-throughonly when Require Post-Pivot Follow-Through is on: the fraction of the post-pivot range already retraced in the signal's direction must be ≥ Min Follow-Throughfollow-through x < y
7Trading sessionthe confirmation bar's open time (UTC) must be inside the session — the symbol's own calendar in Auto, or the explicit UTC hour window in ManualUtcoutside the trading session (… UTC)
8MTF hard gateonly with Confluence Gate = HardGate: the direction-aligned confluence score must be ≥ 2·MinConfluenceScore − 100MTF gate (x)
9Hidden MTF alignmentonly for hidden candidates, and independently of Confluence Gate: the direction-aligned confluence score must not strongly oppose the signal — a continuation pattern fighting the higher-timeframe flow is the classic trap, and the hidden family's edge is that flow (Hidden: MTF Alignment Gate)hidden vs MTF flow (x)
Follow-through measures the retraced fraction, not the distance from the pivot FollowThrough = (close − lowest low) / (highest high − lowest low) over [pivot, confirmation] for a bullish signal (mirrored for bearish), clamped to 0…1. A confirmed pivot is by construction the extreme of its window, so “is the close above the pivot low?” is always true and would filter nothing at all. 0 means price is still sitting at the extreme, 1 means it has retraced the whole post-pivot range. The measure is scale-free, so one threshold works on M1 and on D1. When it cannot be measured (no range, missing bar) it returns the neutral 0.5 rather than guessing.

6.7 The quality score

A weighted, bounded 0–100 score. Every component is normalised against a scale-free reference (ATR for price, the rolling mean absolute MACD for the oscillator), so the score means the same thing on EURUSD M1 and on XAUUSD Weekly. Components that cannot be evaluated are dropped from both the numerator and the denominator rather than being replaced by a neutral value, so an unavailable input can never inflate or deflate the result: quality = 100 × Σ(w·v) / Σw over the available components.

#ComponentWeightValue (all clamped to 0…1)Available when
1Oscillator disagreement0.18min(oscLegRms, 1.2) / 1.2always
2Size of the price leg0.10min(priceLegAtr, 4) / 4always
3Pivot formation0.09min(mean prominence in ATR, 2) / 2always
4Pivot separation0.07DistanceFit(distance)always
5Zero-zone depth0.06min(zoneDepth, 1.5) / 1.5always
6RSI agreement, graded0.07RsiStrength (§6.5)regular divergence with RSI readable at both pivots
7Histogram agreement0.071.0 agrees / 0.25 disagreeshistogram readable at both pivots
8A/B/C grade0.101.0 / 0.65 / 0.35always
9Trend alignment0.09hidden: 0.5 + aligned/(2·limit); regular: 0.5 + aligned/(6·limit)Use Trend Filter
10Post-pivot follow-through0.06the retraced fraction aboveUse Momentum Filter
11Volatility regime0.050.25 spike (mean bar range > 1.8·ATR) / 0.60 dead tape (< 0.45·ATR) / 1.0 normalUse Volatility Spike Filter
12MTF confluence0.08hard/soft-aware mapping of the aligned confluence score (§9.4)confluence on and at least one level available
13This family's realised win rate0.08the bucket's win rateAdaptive Learning and at least Min Learning Samples resolved outcomes
Component 9 deserves a note For a reversal pattern the best context is an already-exhausting trend, so the value peaks when the counter-trend move has stopped (aligned ≥ 0) and falls toward the parabolic extreme the hard gate rejects — the denominator is 6·limit, deliberately gentle. For a continuation pattern the trend should be behind it, so the denominator is 2·limit: a hidden divergence fighting the trend is penalised hard. An earlier version had this sign flipped, which awarded maximum quality to the steepest falling-knife context.

Two thresholds act on the score: below Min Quality Score the candidate is dropped entirely; below Weak Signal Threshold it is drawn in the weak colour (amber by default) instead of its family colour. Alert Min Quality is a third, higher bar that only gates alerts (§11). In automatic mode all three carry the ±10% timeframe bias of §3.5.

6.8 What a registered divergence remembers

FieldContent
Identityserial id, object-name prefix (namespaced by indicator instance, so two copies on one chart never fight over the same object names), family (bull/bear × regular/hidden), grade
Geometrystart/end source indices and chart indices, start/end times, start/end price, start/end MACD, start/end display values, pivot distance
Assessmentquality, the confluence score in force at registration, price leg in ATR, oscillator leg in RMS
Trade referenceentry price = close of the confirmation bar, entry ATR (platform ATR, or the mean-true-range fallback while it warms up), the outcome state, best and worst excursion in ATR units, and ScannedTo — how far the outcome scan has already run
Drawingthe list of indicator-area object names and price-chart object names it owns, so cleanup can never leak a name

A pivot that predates the loaded chart history cannot be anchored, so its chart index stays −1. The record is still registered — outcomes, learning, the panel census and the alert all key off source indices — and drawing simply refuses to paint anything with a negative anchor. Dropping the record instead would silently delete those signals too. (An earlier version clamped the index to 0, which drew the divergence from the very first bar of the chart: a line spanning the whole pane, anchored on a bar that has nothing to do with the signal, and impossible to distinguish from a real one.)

6.9 Drawing

ElementDetails
Oscillator linea trend line between the two plotted extremes, in the family colour (or the weak colour), with Line Thickness and Line Style; the hover tooltip carries the full description
MarkersBullish / Bearish Marker Icon (up/down triangle by default) at both ends
Drop linesoptional dotted verticals from each end down to the zero axis — they make the oscillator legs directly comparable
Labelplaced at the chart bar halfway along the line, nudged toward zero by min(LabelOffset, 25% of the visible band) and clamped inside it. Nudging away from zero put labels outside the auto-rescaled range on exactly the divergences with the deepest legs: the object existed (tooltip and object list worked) but nothing was ever painted
Label wordingPlain: HIDDEN BEAR DIV 92% / BULL DIV 78%. Compact: HidBear 92% / RegBull 78%. Full: HIDDEN BEARISH DIVERGENCE - GRADE A - QUALITY 92%. Grade and quality are separately switchable
Mirror on the price chartoptional: the same line drawn between the two price extremes on the chart itself (visible in the top pane of the overview screenshot)
LayeringObject Z-Index is clamped to 0…98 for the line; labels sit at +1 and crossover markers at +2, so the intended paint order survives the platform's own clamp to 0…100
Budgetsat most Max Drawn Divergences are on the chart (the newest win, older ones lose their objects but keep their records); only divergences ending within Draw Only Most Recent N Bars are drawn at all; the record list itself is capped at max(MaxDivergences, LearningMemory) + 64, because the learner needs the outcomes of the last LearningMemory signals
Every drawing call is isolated A drawing failure must never abort the calculation pass, and an object is only recorded when it was really created, so cleanup cannot leak names. Values that are NaN or infinite are refused before the call rather than handed to the platform.

7. Outcomes & Adaptive Learning

7.1 What is measured

Every registered divergence becomes a measured trade hypothesis, denominated in ATR so that one set of numbers means the same thing on every instrument and timeframe:

entry = close of the CONFIRMATION bar (pivot + lookback) - never the pivot bar entryAtr = ATR at the confirmation bar (mean true range fallback while ATR warms up) target = Outcome Target (x ATR) default 1.0 stop = Outcome Stop (x ATR) default 1.5 horizon = Outcome Horizon (resolved, wall-clock capped at 120 days in automatic mode) per closed bar k in (confirmation, confirmation + horizon]: favourable = bullish ? (high_k - entry)/entryAtr : (entry - low_k)/entryAtr adverse = bullish ? (entry - low_k)/entryAtr : (high_k - entry)/entryAtr BestMove = max(BestMove, favourable); WorstMove = max(WorstMove, adverse) WIN (+1) when BestMove >= target and BestMove >= WorstMove -> stop scanning LOSS (-1) when WorstMove >= stop and BestMove < target -> stop scanning EXPIRED (+2) when the horizon elapses with neither touched PENDING (0) until one of the three happens

7.2 The four buckets

Outcomes are accumulated per signal family, because a regular bullish divergence and a hidden bearish one are not the same hypothesis and should not share a track record:

BucketPanel namePopulation
0Reg Bullregular bullish
1Reg Bearregular bearish
2Hid Bullhidden bullish
3Hid Bearhidden bearish

Each bucket stores wins, losses and expired counts; the win rate is wins / (wins + losses) — expired signals are neither wins nor losses, they are signals that did not resolve, and folding them into either side would invent a result.

7.3 How it feeds back

When Adaptive Learning is on and a bucket has at least Min Learning Samples resolved outcomes, that bucket's win rate enters the quality score as component 13 with weight 0.08 (§6.7). Below that sample count the component is dropped from numerator and denominator, not replaced by 0.5: a track record of two trades is not evidence, and treating it as neutral-but-counted would let a lucky pair drag every subsequent score.

This is a feedback loop, and it is deliberately a weak one Weight 0.08 out of a total of ~1.10 means a family with a 0% win rate loses about 6 quality points and a family with a 100% win rate gains about 2 relative to the neutral case. Enough to tilt selection toward what has been working on your feed, not enough to let a small sample take over the detector.

7.4 Persistence

AspectBehaviour
Storethe platform's LocalStorage, scope Type
KeyAMP|<symbol>|<resolved profile label> — per symbol and per timeframe, so M1 statistics never contaminate H4
Formatwins,losses,expired;wins,losses,expired;… (four groups, invariant culture)
When writtenthrottled after outcomes change, and once more on OnDestroy
When readat initialisation, after the profile is resolved; a restore is reported under Debug Log
FailureLocalStorage may be unavailable (first run, sandboxed profile) — persistence is wrapped so it can never break the indicator
History reloadcounters are reset. They are a statistic of the records that were just discarded; keeping them would count the same market events again on every deeper download, symbol switch or reconnect, inflating the sample counts and skewing the win rate toward reload-time events
Turn it off if you want a fixed detector Adaptive Learning = false removes component 13 entirely and stops the outcome scan (the panel still shows what it can). This is the right choice when you are comparing configurations, because it makes the detector a pure function of parameters and data.

8. Crossover Signals & Markers

8.1 What a crossover signal is

A trigger is the transition of the latch described in §5.6: +1 on a bullish flip, −1 on a bearish one, read from the sequential state machine rather than from a two-bar comparison. DetectSignalCross(s) answers whether the latch flipped at source bar s. With λ = 1 this is exactly the classic MACD/signal crossing; below 1 it is the advanced trigger.

A separate detector watches the zero line (DetectZeroCross), with the same noise floor and the same hysteresis at exactly zero, so a flat tape cannot fabricate zero crosses out of ulps. Zero-line markers and zero-line alerts are both off by default.

8.2 What gets drawn

Marker StyleResult
TextAndArrow (default)a triangle icon anchored on the crossing point plus a plain-language label placed clear of the histogram
TextOnly / ArrowOnlyone of the two
Nonenothing; the crossover still drives the outputs and the alerts
Marker WordingBullishBearish
BuySell (default)BUYSELL
LongShortLONGSHORT
TurnUpDownTURN UPTURN DOWN
BullishBearishBULLISHBEARISH

Zero-line crosses use the neutral wording ABOVE 0 / BELOW 0 so they can never be mistaken for a crossover signal. Since v2.0 the family the markers follow is a choice, not a checkbox: Cross Mode = SignalLine (default), ZeroLine or SignalAndZero (§17). The trigger outputs stay bound to the signal-line latch whichever mode is selected, and the two alert toggles of group 10 stay independent of it. The hover tooltip of every marker carries the full detail: signal kind (and the λ in force when the band is open), the MTF confluence score, the oscillator / signal / histogram values and the source bar's UTC timestamp.

Label placement is not a fixed offset. Clearance is computed in the oscillator's own units (the rolling mean absolute histogram, falling back to the mean absolute MACD and then to |MACD| itself), multiplied by Marker Label Offset, converted into whatever scale the outputs are plotted in, then limited to 40% of the visible band and stepped toward the zero axis. Stepping toward zero is guaranteed to stay inside the band the pane displays; a “bullish up / bearish down” rule collapses onto the marker point whenever the cross sits on the same side of zero as its direction — the common case in trends — where the label ends up painted on the arrow inside a same-colour histogram cluster and reads as a missing label.

8.3 Bookkeeping rules

8.4 The trigger outputs

Bull Trigger and Bear Trigger are plotted at the MACD value of the triggering bar, so the dot sits exactly on the oscillator, and they are exposed as outputs so cBots can consume them (§12).

9. Multi-Timeframe Confluence Ladder

9.1 How the ladder is built

Two ways, and an explicit list always wins:

ModeBehaviour
Derived (Confluence Timeframes empty, default)the standard ladder M1, M2, M3, M5, M10, M15, M30, H1, H2, H3, H4, H6, H12, D1, D2, D3, W1, MN is walked from the resolved source timeframe upwards, and the first Confluence Levels (1–3) entries are used. Each level is resolved through the platform's own parser, so a timeframe your build does not have is skipped rather than fatal
PinnedConfluence Timeframes takes an explicit list — M15,H1, Hour4 Daily, H1|D1|W1; separators are comma, semicolon, space and pipe. Unparseable entries are skipped rather than aborting the list
Each level gets its OWN fully adaptive profile A confluence level is not the primary setting re-read on a coarser series: it is a complete pipeline built exactly the way the indicator would be if you had opened that chart yourself — its own resolved periods, its own norm window, its own volatility baseline. The ladder reports direction, so the regime filter bank is off at every level (a regime-mixed score would not be comparable across timeframes).

9.2 The state score

Each level (and the primary) is reduced to a single number in −100…+100 by three signed tests:

+/- 40 MACD line above / below zero +/- 35 MACD line above / below its signal line +/- 25 histogram rising / falling (against the previous bar) -------------------------------------------------- score = clamp(sum, -100, +100) (NaN -> the level is simply not available)

The ladder is then a weighted mean, with the primary timeframe carrying the most weight:

weights = { primary: 2.0, level 1: 1.0, level 2: 0.6, level 3: 0.4 } confluence = clamp( SUM(weight * score) / SUM(weight over available levels), -100, +100 )

A level that has fewer than three bars, no mapping, or no oscillator value yet is marked unavailable and contributes nothing — including nothing to the denominator, so a missing level cannot drag the score toward zero.

Textual states, used by the panel and the alert: BULL at ≥ +33, BEAR at ≤ −33, otherwise FLAT / NEUTRAL.

9.3 Mapping a source bar onto a higher timeframe

The same closed-bar rule as the primary mapping: “the last HTF bar that had closed by sourceOpenTime + sourceSpan”, answered as “opened at or before asOf − htfSpan”, with a walk-back guard for cutoffs that land inside a non-trading gap (the platform's lookup can round up there, and that bar had not closed).

Strict Non-Repaint MTF Mapping (default on) additionally excludes the newest HTF bar entirely. This matters on the live bar, where asOf is a moment in the future: without the exclusion the ladder quotes a higher-timeframe bar that is still forming, so the confluence score moves while the source bar is open — and after a history reload the same divergence would be re-scored against a now-closed HTF bar, i.e. a registered signal's quality would change retrospectively. With it, every quoted value is final and a replay reproduces it exactly. Turn it off if you want the ladder to follow the higher timeframe tick by tick and accept both consequences.

9.4 Where the confluence score is used

ConsumerHow
Quality component 12SoftPenalty (default): 0.5 + (aligned − threshold)/100 with weight 0.08, where threshold = 2·MinConfluenceScore − 100. Centring on your threshold keeps Min Confluence Score meaningful in soft mode instead of only ever being a hard switch. HardGate: the score does not enter quality at all — it is a pass/fail gate (§6.6, gate 8)
Panelan MTF row with the weighted score and state, plus one row per available level labelled with its timeframe (e.g. D1  +75 BULL)
Alertsan optional confluence flip alert when the sign of the score changes (§11)
Marker tooltipsthe score in force when the crossover marker was built
Divergence recordsstored at registration, so the panel census and the record agree forever
Soft vs hard SoftPenalty is the better default: a divergence against the higher timeframe is not worthless, it just has to earn its way past the quality floor. HardGate is the right choice when you trade only with the bigger picture and would rather see fewer, cleaner labels. Off removes confluence from quality and from the gates but keeps the panel rows.

10. The Info Panel

10.1 Why it is built from real controls

A single DrawStaticText block is why info panels collide with the plot: it is one opaque string anchored to a corner whose height is unbounded, so it grows over the oscillator and cannot be clipped by anything. This panel is built from real chart controls — Border cards containing StackPanel rows of TextBlock cells — pinned to a corner of the indicator window, with a static-text fallback for builds that cannot host controls.

10.2 The four layouts

Panel LayoutResult
MergedCard (default)one card, two sections separated by a hairline rule. One box means one set of padding and one separator, so the fused layout fits noticeably more information into the same pane height
SplitTopBottomtwo cards on opposite vertical edges — but only when two boxes actually fit; otherwise it collapses onto the status section with the full height budget rather than letting the cards overlap
StatusCardOnly / SignalsCardOnlyone section, all the height

Panel Side chooses left / right / centre; Vertical Edge chooses which vertical edge is “primary” (the other section goes to the opposite edge in split mode).

10.3 Geometry — the guarantee that it cannot cover the oscillator

10.4 The five sections

SectionSwitchContains
ConfigurationShow Configuration Sectionstyle, timeframe (+ auto/manual), resolved MACD triple, kernel, signal kernel (only when it differs), price input, period scale, filter-bank legs, pivot geometry, quality gate
MarketShow Market SectionMACD line, signal, histogram, trend + slope, momentum, histogram strength, ATR% with the floor in force, session state, regime (ER), ADX, price, bar time
MTFShow MTF Confluence Sectionweighted confluence score + state, one row per available level
SignalsShow Signals Sectionoverall bias, the last divergence (family, age, quality, legs, outcome) or “none in window”
StatisticsShow Statistics Sectioncensus over the stats window (regular/hidden × bull/bear, pending, drawn), win rate with its sample size, average quality, and one row per learning bucket

Every row is explained line by line in §21.

11. Alerts

11.1 What an alert is

Three independent channels, each with its own switch. cTrader gives an indicator no modal dialog of its own, so these are all the routes that exist:

ChannelSwitchDetails
Log lineWrite Alerts To Logthe full formatted message, invariant culture, in the platform log
Popup notificationShow Alert Popupplatform notification with the caption Advanced MACD Pro, colour-coded by direction: green (success state) for a bullish signal, red (error state) for a bearish one. On a build without the custom-notification API the attempt is made once, a NOTE is printed, and the channel is disabled for the session — the log line and the sound still go out
SoundPlay Sound + Bullish / Bearish Soundany platform SoundType; defaults are the positive/negative notification sounds. Sounds do not play during backtesting or optimisation

Enable Alerts is the master switch for all three.

11.2 The six triggers

TriggerSwitch (default)Message
Signal-line crossoverAlert: Signal-Line Cross (on)MACD bullish cross on EURUSD H1 at 2026-10-10 14:00 UTC (price 1.09412)
Zero-line crossAlert: Zero-Line Cross (off)MACD crossed above zero on EURUSD H1 at …
DivergenceAlert: Divergence (on)Regular BULLISH divergence (grade A, quality 82%) on EURUSD H1 at …
Confluence regime flipAlert: MTF Confluence Flip (off)MTF confluence turned BULLISH on EURUSD (H1 +75 H4 +50 D1 +25)
Plan level reachedAlert: Plan Level Reached (TP/SL) (on)PLAN TP1 HIT on EURUSD: level 1.12024 touched at 2026-10-22 09:00 UTC (SHORT plan #41 @ 1.12300, R:R 1:1.0)
Momentum trendline breakAlert: MACD Trendline Break (on)MACD SUPPORT trendline BREAK (bearish) on EURUSD h1 at 2026-10-22 09:00 UTC (MACD -0.00042 vs line -0.00039)

11.3 Latching, arming and anti-spam

12. Outputs & Programmatic Use

12.1 The twelve data series

OutputPlot typeDefault colourContains
MACDLine, 2px#4FA3FFthe oscillator, in display units
SignalLine, 2px#FFB74Dthe signal line, same units
Hist Bull StrongHistogram, 3px#00E676histogram ≥ 0, expanding and at/above its own average size
Hist Bull WeakHistogram, 3px#3E7D55histogram ≥ 0, not strong
Hist Bear StrongHistogram, 3px#FF1744histogram < 0, strong
Hist Bear WeakHistogram, 3px#8E4450histogram < 0, not strong
Bull TriggerPoints, 5px#00E676the MACD value on a bar where the latch flipped bullish; NaN elsewhere
Bear TriggerPoints, 5px#FF1744the MACD value on a bearish flip; NaN elsewhere
Bull DivergencePoints, 5px#B2FF59a dot at the confirmation bar of every registered bullish divergence
Bear DivergencePoints, 5px#FFAB40the same for bearish divergences
Zero LineDotted line, 1px#3A4A5E0.0 on every bar — an explicit series so the reference renders on every build and can be hidden from the legend
MACD Higher TFLine, dotted, 1px#FF7043the MACD line of the first confluence rung, strict-mapped and in the same display units as the primary line. Present only while Show Higher-TF MACD Line is on; empty (not zero) when the ladder is disabled or the rung has no closed mapping

12.2 Consuming them from a cBot or another indicator

// In a cBot or a plugin - the platform's standard way to instantiate another indicator.
// Overloads of Create<T> let you pass parameter values; the parameterless one uses defaults.
var amp = Indicators.Create<cAlgo.Indicators.AdvancedMacdPro>();

double macd   = amp.MacdLine[index];                 // MACD
double signal = amp.SignalLine[index];               // Signal
double hist   = macd - signal;                       // the four buckets are mutually exclusive
bool bullTrigger = !double.IsNaN(amp.BullTrigger[index]);           // crossover latch flipped bullish
bool bearTrigger = !double.IsNaN(amp.BearTrigger[index]);
bool bullDiv     = !double.IsNaN(amp.BullDivergenceOutput[index]);  // divergence confirmed on THIS bar
bool bearDiv     = !double.IsNaN(amp.BearDivergenceOutput[index]);
The indicator does not trade It has AccessRights.None and exposes no trade-facing API. A robot consuming these outputs is responsible for its own sizing, its own spread model and its own re-quote handling.

13. Trade Management — the Projection Engine

A registered divergence is a trade idea, not a picture. Version 2.0 closes the loop: at the moment a signal is registered the engine resolves an explicit plan — Entry / SL / TP1 / TP2 — draws it as labelled horizontal levels on the price chart, and then manages its lifecycle bar by bar on closed source bars only. The indicator still places no orders: a plan is a drawing, a set of alerts and a set of journal lines, and nothing else.

A live trade plan on the price chart
The whole terminal with the projection engine running: ENTRY, SL -1R, TP1 +1.0R HIT and the TRAIL 3.0A chandelier hint on the price chart, the divergence that produced the plan in the oscillator pane, and the plan block of the info panel (Plan / SL / TP1 / TP2 / R:R / PState / Path) at the bottom left.

13.1 What a plan is, and when it is built

The plan is computed once, at registration, from the confirmation bar — never from the pivot, which would bake in look-ahead. Everything a later consumer needs (the drawing, the lifecycle, the alerts, the panel, the journal) reads the resolved levels from the record:

LevelValue
Entrythe confirmation bar's close — the first price at which the signal could have been acted upon
Stopstructure stop or ATR stop (§13.2), clamped into the sanity band
TP1 / TP2entry ± Plan TP1 × risk and entry ± Plan TP2 × risk (§13.3)
ATR at entryremembered on the record, so every later read-out speaks the units the plan was built in

A plan is refused — silently, with no half-drawn levels — when the projection engine is off, when the ATR at entry is not a usable positive number, or when the entry price itself is not usable. “Usable” means finite: an infinite entry or ATR would otherwise produce infinite levels that the panel, the alerts and the lifecycle would all treat as a real plan.

13.2 The two stop rulers, and the band between them

Stop SourceRule
PivotStructure (default)the stop sits beyond the divergence's pivot extreme plus Pivot Stop Buffer (× ATR, default 0.5). Structure defines the stop only when it is on the correct side of the entry and measurably beyond it — at least 0.25 ATR — otherwise the ATR ruler takes over, so a pivot sitting inside the noise can never produce a noise-tight stop.
AtrMultiplethe stop distance is Outcome Stop (x ATR) — the same ruler the adaptive learner grades outcomes with, so the levels drawn on the chart are exactly the levels the win rate in the panel describes.

Whatever the source, the plan risk is then clamped into a sanity band:

risk = clamp(risk, 0.5 * ATR_entry, 6.0 * ATR_entry)
Two rulers, on purpose The band applies to the plan only. The learning engine keeps grading outcomes with the raw Outcome Target / Outcome Stop ATR multiples, which is why the panel's Expect and PF rows sit beside the plan rows and name the ruler they use (§21.4, §29).

13.3 Targets: R-multiples of the plan risk

TP1 = entry + dir * RR1 * risk (Plan TP1, default 1.0, range 0.5-10.0) TP2 = entry + dir * RR2 * risk (Plan TP2, default 2.0, range 1.0-20.0) dir = +1 for a bullish signal, -1 for a bearish one if RR2 <= RR1 then RR2 = 2 * RR1 (reported at start-up, never drawn on top of TP1)

Because both targets are multiples of the plan's own risk, a plan whose reward is below its risk cannot be produced by the default settings, and the reward:risk reading is identical on EURUSD M1 and on XAUUSD W1.

13.4 Drawing: levels, labels, and the HIT / VOID / STALE styling

The four levels are drawn from the confirmation bar forward for Projection Length chart bars (default 120), each with its own label when Show Projection Labels is on. Colours: entry and stop from Entry Line Color / Stop Line Color, targets from the signal's direction colour. A live plan draws solid lines; the moment the plan leaves RUNNING the whole group is re-rendered dotted, with a suffix on every level, so a finished plan can never masquerade as a live one:

LevelWhile runningAfter the event
ENTRYENTRY 1.12419ENTRY … STALE when the horizon expired
SLSL 1.11817 -1RSL … -1R HIT when the stop was touched
TP1TP1 … +1.0R+1.0R HIT if reached, +1.0R VOID if the plan ended first
TP2TP2 … +2.0R+2.0R HIT if reached, +2.0R VOID if the plan ended first
Solid means live Dotted levels are history. If you trade off this indicator, the single habit that prevents the classic mistake is reading the line style before the label: a TP1 +1.0R that is dotted and says VOID is a plan that already ended, not an open target.

13.5 The lifecycle: five states and the conservative same-bar rule

RUNNING -> TP1 HIT -> TP2 HIT | STOPPED | STALE
StateMeaningWhat you see
RUNNINGno level touched yetfour solid levels; panel PState RUNNING
TP1 HITTP1 touched before the stopTP1 dotted HIT; while the plan stays in this state a BE STOP line sits at the entry
TP2 HITboth targets touchedTP1 and TP2 dotted HIT, the whole group dotted
STOPPEDthe stop was touched (or won a same-bar tie)SL dotted -1R HIT, both targets dotted VOID
STALEthe outcome horizon elapsed with neither the stop nor TP2 touchedlevels dotted, ENTRY carries STALE; no alert — nothing happened

Resolution runs on closed source bars only, and the intrabar-order problem is answered the pessimistic way: a bar that touches both the stop and a target fills the stop first. OHLC cannot reveal the order of touches inside a bar, so the conservative fill is the honest one — the same rule the outcome engine applies when it grades a learning sample (§7).

TP1 HIT is not terminal. The plan continues to TP2, to the stop, or to staleness, and the panel keeps showing that half the position already paid: a plan that hit TP1 and then stopped does not read as a plain STOPPED.

13.6 Break-even and the chandelier trail

With Show Break-Even & Trailing Hints on (default), a managed plan gains up to two extra lines:

LineAppearsRule
BE STOPwhile the plan is in the TP1 HIT state (it goes away when the plan ends)at the entry level — the “move it to break-even” suggestion
TRAIL n.nAon a plan in the RUNNING or TP1 HIT statethe chandelier level at Trailing Stop (x ATR chandelier) (default 3.0) from the best close since entry, floored at the plan's own stop — the hint can never be wider than the risk the plan started with. It refreshes once per closed chart bar, gated on the plan's own source-freshness watermark, its backward reach is the resolved outcome horizon rather than a literal bar count, and it can only ratchet in the position's favour — a redraw never regresses it.
Suggestions, not orders Both lines are drawings. The indicator has AccessRights.None and exposes no trade-facing API; nothing here modifies a position, and nothing here knows whether you have one.

13.7 Budgets, and why a plan survives them

Max Visible Trade Plans (default 3, range 1–10) caps how many plans are on the chart at once; the oldest lose their graphics first. A plan that loses its slot loses only its graphics — its lifecycle, its alerts and its journal lines continue, because visibility and management are deliberately separate budgets. The same is true of the divergence drawing budgets: when a record loses its Max Drawn Divergences rank or falls out of Draw Only Most Recent N Bars, only its oscillator graphics are removed; the price-chart plan stays managed. The one full-teardown path is the hard record cap.

13.8 Alerts, panel rows and the journal

SurfaceWhat it carries
Alert family
Alert: Plan Level Reached (TP/SL)
one popup / sound / log line per lifecycle event, e.g. PLAN TP1 HIT on EURUSD: level 1.12024 touched at 2026-10-22 09:00 UTC (SHORT plan #41 @ 1.12300, R:R 1:1.0). A stopped plan uses the bearish sound, hits the bullish one. Freshness is scaled by the source/chart bar ratio, so a fine source on a coarse chart cannot silently swallow the touches it still journals (§11).
Panel rowsPlan (LONG @ / SHORT @ entry), SL, TP1, TP2, R:R, PState and Path — the best and worst excursion since entry in plan-R units, so the HIT / VOID story can be checked against the candles at a glance (§21.4).
Journalone AMP-PLAN line per event: TP1_HIT, TP2_HIT, STOP_HIT, EXPIRED (§16).

13.9 The guarantees

13.10 Parameters — group 12, Trade Management

Groups 11 and 12 of the parameter dialog
Group 11 (Signal Journal) and the whole of group 12, as the dialog shows them.

All twelve parameters, with their defaults, are in the reference table (§17).

14. Momentum Trendlines

Two automatic lines in the oscillator pane: support and resistance, drawn through the momentum readings of the very pivots the divergence engine confirms. A momentum trendline breaking before price does is one of the oldest lead signals in the MACD family (Appel; Brown's momentum trendlines) — and the oscillator, not the price chart, is where that reading belongs.

14.1 What is drawn, and from which pivots

LineAnchorsBreak
Support the last two qualifying pivots of the price-low pool, at their MACD readings a confirmed MACD close below the line — a bearish read
Resistance the last two qualifying pivots of the price-high pool, at their MACD readings a confirmed MACD close above the line — a bullish read

There is exactly one pivot truth in this indicator: the trendline engine consumes the confirmed pivot pools the divergence engine already publishes (§6.2), so a line never rests on a pivot that the prominence filter, the warm-up guard or the right-leg-closed rule would have rejected.

14.2 Scale-free gates: why everything is in “x RMS”

A MACD lives in price units, so “points per bar” would mean something different on every symbol. Both gates are therefore multiples of the oscillator's own yardstick — the rolling mean absolute MACD, the same “x RMS” stick the Min Oscillator Leg gate measures with — resolved at the anchor being tested:

ParameterDefaultWhat it does
Trendline Min Pivot Gap (reference / manual)5 (2–200) minimum separation of the two anchor pivots; a reference value anchored at H1, so it scales with the timeframe in automatic mode like every other reference (§3.3)
Trendline Max Slope (x RMS/bar)0.25 (0.01–2.0) rejects lines steeper than the market can be trusted to respect
Trendline Break Threshold (x RMS)0.10 (0.0–1.0) how far beyond the line the MACD must close for the break to count

The result behaves identically on EURUSD M1 and on XAUUSD W1, which is the whole point of the adaptive engine.

14.3 When the lines move — and when they never move again

14.4 What you see and hear

SurfaceContent
TL BREAK markerat the breaking bar in the oscillator pane, coloured by the direction of the break (Show Trendline Break Markers)
AlertMACD SUPPORT trendline BREAK (bearish) on EURUSD h1 at 2026-10-22 09:00 UTC (MACD -0.00042 vs line -0.00039) — family Alert: MACD Trendline Break (§11)
Panel rowsTL Sup / TL Res: each line's anchors and slope, turning direction-coloured the moment the line is broken (§21.3)

14.5 Reading one break in five seconds

  1. Which line broke? Support breaking is bearish momentum; resistance breaking is bullish.
  2. Look at the histogram buckets on the same bar: a support break printed while the histogram is already bright red is a confirmation; the same break on a tired, muted histogram is the lead signal this engine exists to give you.
  3. Check the ladder rows (§21.3): a momentum break against the higher timeframes is a warning, not an entry.
  4. Only then look for the divergence or crossover that would actually trigger a plan (§13).
Tip A momentum trendline break is not a signal in this indicator's own vocabulary: it never registers a divergence, never moves the quality score and never creates a plan. It is an alert family and two panel rows — context that arrives earlier than price.

15. Session Markers

Thin vertical lines on the price chart at configurable UTC times — the London and New York opens by default. They are pure context: no gate, no score, no alert and no output reads them, ever. The signal logic and the session filter (§6.6, gate 7) are separate mechanisms and stay separate.

Groups 13 and 14 of the parameter dialog
Group 13 (MACD Trendlines) and group 14 (Session Markers) in the dialog.

15.1 Syntax

Marker Times (UTC, HH:MM list) accepts a list separated by commas, semicolons or spaces; each entry is HH:MM or a bare hour. Default 07:00,13:30. Entries the parser cannot use are skipped individually rather than aborting the list; the parsed set is sorted ascending, so markers inside one wide bar are emitted (and trimmed) in chronological order.

A list with nothing valid in it draws nothing and says so once at start-up: WARNING: Session Marker Times '…' contains no valid HH:MM entries. The layer never guesses a default time behind your back.

15.2 Wide bars carry every occurrence

A Weekly or Monthly bar can contain several configured times. The object key is

key = chartIndex * 1 000 000 + occurrence * 1440 + UTC-minute

so one wide bar draws one line per occurrence instead of silently dropping all but the first, while key / 1 000 000 is still exactly the chart index for the rolling-window trim. The key space is collision-free for any chart length the platform can hold, and needs no overflow guard.

15.3 Window and object cap

ParameterDefaultRule
Marker Window (chart bars)300 (50–2000) markers are drawn on closed chart bars inside this rolling window; older ones are removed
hard object cap1500 lines not a parameter: the total is capped and the oldest are trimmed first, so a deep wide-bar chart cannot flood the object store
Marker Color#546E7A deliberately muted — context, not signal

Because the sweep only ever advances over newly closed chart bars and re-runs from the window edge after a history rebuild, the layer costs nothing per tick and cannot leave stale lines behind when you scroll, switch symbol or change timeframe.

16. The CSV Signal Journal

Signal Journal (CSV lines to log) (group 11, default on) writes Excel-ready, semicolon-separated, invariant-culture lines into the platform log. Three streams, one join key: the signal's id is the first column of every line, so a signal, its lifecycle and its measured verdict can be joined in a spreadsheet without guessing. The header is printed once per instance, so a captured log is self-describing.

AMP-JOURNAL-HEADER;id;time;symbol;sourceTF;type;grade;quality;mtf;entry;sl;tp1;tp2;rr1;rr2;atrEntry;stopMode

16.1 The three streams

StreamOne line perColumns
AMP-JOURNALevery live confirmed divergence, at registration the 16 header columns: id; confirmation time (UTC); symbol; resolved source timeframe; REGULAR-BULL / HIDDEN-BEAR / …; grade; quality (F1); confluence score (F0); entry; sl; tp1; tp2 (- when the plan has no levels); rr1; rr2 (F2); ATR at entry; structure / atr
AMP-PLANevery plan lifecycle event id; confirmation time; symbol; TP1_HIT / TP2_HIT / STOP_HIT / EXPIRED; event bar time; touched price
AMP-OUTCOMEevery resolved learning outcome id; confirmation time; symbol; family-direction; WIN / LOSS / EXPIRED (exact codes — never a signed number, because EXPIRED would otherwise be read as a win); best excursion (F2, ATR); worst excursion (F2, ATR)

16.2 History-gating: why a reload never re-emits

Only live events are journaled. A start-up or reload rescan re-resolves the whole history to the same records but emits nothing, so the CSV stays duplicate-free across restarts and a Monday-morning log is not a flood of last month's events. The same gate applies to the plan-level and divergence alerts (§11.3). The consequence to remember: the journal describes what happened while you were watching, not the whole chart history.

16.3 Getting it into Excel

  1. Open the platform log, select the lines, copy.
  2. Paste into a text file (or straight into a sheet) and split on ; — Text → Columns in Excel, or Data → Split text to columns in Sheets.
  3. Keep the AMP-JOURNAL-HEADER row as your header; filter the rest by stream prefix.
  4. Join AMP-PLAN and AMP-OUTCOME onto AMP-JOURNAL by id: you now have a per-signal blotter — the idea, its grade and quality, its plan, what the plan did, and what the learning ruler measured.
Culture-neutral by construction Every number goes through one invariant-culture formatter, so a log captured on a comma-decimal system is byte-identical to one captured on a dot-decimal system, and the CSV always matches the panel, the labels and the alerts (§18.3).

17. Complete Parameter Reference — 162 Parameters, 15 Groups

Every parameter, with its default and what it actually does. Defaults in bold, dialog-enforced ranges in parentheses. Names ending in “(reference / manual)” or “(reference)” are reference values anchored at H1 that automatic mode rescales (§3.3) — the numbers actually in force are printed at start-up and shown in the panel. All of them are cross-validated when the indicator initialises: contradictory combinations are reconciled to the safe side and reported (§18.2), and in manual mode any value that does not survive the profile invariants verbatim is reported as well.

The parameter dialog
The indicator's parameter dialog. Its fifteen groups are numbered in the order the engine uses them: the style first (it overwrites everything below it), then the source timeframe, the oscillator core, the adaptive engine, and then the detection, filtering, learning, presentation and alert groups. The platform's Lines tab is where the twelve output series can be recoloured, restyled or hidden individually. Groups 12–14 — trade management, momentum trendlines and session markers — are pictured in §13.10, §14 and §15.

Trading Style — 1 parameter

ParameterDefaultDescription
Trading StyleUniversalMaster switch. Universal writes nothing; Scalping, Swing and Position each write 134 of the 162 parameters before anything is resolved (§4.2–§4.4, value by value in §32.8). A style never touches the timeframe — that is what makes one style work on M1 and on H1 alike. While a style is active, editing the parameters it wrote has no effect; set it back to Universal and its values stay in the dialog as your starting point.

Timeframe & Source — 10 parameters

ParameterDefaultDescription
Source TimeframeCurrentChartThe series the whole engine computes on. CurrentChart uses the chart you attached to; the twelve fixed entries resolve through the platform's own parser; Custom reads the name below. Every resolved period, window, gate and the whole MTF ladder derive from this single choice (§3).
Custom Timeframe Name(empty)Free text, used only when Source Timeframe = Custom. Accepts canonical names (Minute15, Hour4, Renko10, Range50, Tick1000), trader shorthand (M15, H4, D1, W1, MN, T1000), Heikin-Ashi variants (HeikinH4) and the words current/chart. Case, spaces and punctuation are ignored. A name the platform rejects falls back to the chart timeframe and is reported, with the list of valid forms.
Strict Non-Repaint MTF MappingtrueUse only bars that had really closed. Affects (a) the chart→source mapping whenever the source is coarser than the chart and (b) the confluence ladder, where it also excludes the still-forming higher-timeframe bar. Off makes both live/intrabar: more responsive, but a registered signal's confluence can then differ after a history reload (§2.3, §9.3).
Enable MTF ConfluencetrueMaster switch of the ladder. The panel's MTF rows, quality component 12, the confluence gate and the confluence-flip alert all follow it (§9).
Confluence Levels (higher TFs)2 (1–3)How many higher timeframes the derived ladder uses. Weights are fixed — primary 2.0, then 1.0 / 0.6 / 0.4 — so the nearest higher timeframe matters most.
Confluence Timeframes (empty = auto)(empty)Explicit ladder; overrides the derived one. Separators: comma, semicolon, space, pipe. Unparseable entries are skipped rather than aborting the list. Examples: H4,D1, Hour4 Daily, H1|D1|W1.
Confluence GateSoftPenaltyOff = informational only (still shown in the panel). SoftPenalty (default) = enters the quality score centred on your threshold, so a signal against the higher timeframe must earn a higher score. HardGate = pass/fail; below the threshold the candidate is rejected and never scored.
Min Confluence Score25.0 (0.0–100.0)0–100, mapped onto the ladder's −100…+100 scale as 2x − 100: 50 = neutral, 60 = mildly aligned, 75 = strongly aligned. In soft mode it is the neutral point of the quality component; in hard mode it is the gate itself.
Auto Load HistorytrueRequest more bars when the loaded window is too short for the resolved profile. Bounded so it can never become an open-ended blocking loop: at most 12 attempts, stopping as soon as a request returns nothing.
Min Source Bars800 (200–20000)Minimum loaded source bars before the engine runs at all. Below it you get a blank pane and an explanatory warning instead of half-computed signals.

MACD Core — 11 parameters

ParameterDefaultDescription
Price InputCloseThe series the oscillator is built from: Close, Typical (H+L+C)/3, Weighted (H+L+2C)/4, Median (H+L)/2, HeikinAshi, or VolumePriceAdjusted — the conviction-weighted VP-MACD input. Formulas and trade-offs in §5.2.
Moving Average TypeExponentialThe kernel of the two MACD legs: Exponential, Hull, KaufmanAdaptive, DoubleExponential, TripleExponential, TimeSeries, Weighted, Triangular, Simple, Wilder. Definitions, warm-up and character in §5.3; all nine alternatives pictured in §23.
Signal Line MA TypeSameAsMacdLineThe kernel of the signal line, chosen separately. SameAsMacdLine (default) keeps the historic coupling and a symmetric crossover; Exponential gives the classic Appel definition regardless of the legs. The resolved pair is printed at start-up and shown in the panel when they differ (§5.4).
Fast Period (reference / manual)12 (2–500)Fast leg. A reference value anchored at H1 in automatic mode (scaled with exponent 1.00, divided by Global Sensitivity); the literal period in manual mode. The 500 ceiling equals the profile invariant's cap, so a value the dialog accepts is never silently rewritten.
Slow Period (reference / manual)26 (3–1000)Slow leg; same reference/manual semantics. The 1000 ceiling equals the invariant's cap — an earlier build capped this at 800 while the dialog accepted 1000, and now any such drift is reported at start-up.
Signal Period (reference / manual)9 (2–300)Signal line period; same reference/manual semantics.
Signal Sensitivity Lambda1.0 (0.80–1.0, step 0.01)Early-entry sensitivity, 0.80–1.00. At 1.00 the band collapses and the latch reproduces the classic crossing exactly; at 0.92 the trigger is advanced to the bar where the histogram has closed 8% of its typical distance to zero. The band is measured in the oscillator's own units, so λ means the same thing on every timeframe and instrument (§5.6).
VP Window (bars, reference / manual)20 (3–200)Bars in the conviction-weighted average of the VP input, and the window of the σ/body means that normalise it. Only used when Price Input = VolumePriceAdjusted. A bar-count window, so it scales with the timeframe in automatic mode.
Output ScaleRawUnits of every plotted value: Raw (price units, comparable to any other MACD), AtrNormalized (divided by that bar's ATR, with a mean-true-range fallback while ATR warms up), SelfNormalized (divided by the rolling mean absolute MACD). Detection is unaffected (§5.7).
Output Gain1.0 (0.05–50.0, step 0.05)Plain multiplier applied to every plotted value, label offset and marker clearance. Use it to make a raw oscillator readable on instruments with an extreme price scale; it changes nothing about detection.
Show Higher-TF MACD LinetruePlots the MACD line of the first rung of the confluence ladder as the twelfth output series (MACD Higher TF, dotted orange), strict-mapped and expressed in the same display units as the primary line, so the two are directly comparable on one scale. With Enable MTF Confluence off there is no ladder to read: the series stays empty (not zero) and the start-up log says so (§5.7, §9, §12.1).

Automatic Adaptation — 9 parameters

ParameterDefaultDescription
Adaptation ModeAutomaticAutomatic (default) derives every period and window from the resolved bar duration through the scaling law, then applies wall-clock caps. Manual honours every dialog value verbatim (clamped only to the range the parameter itself declares), skips the caps, and reports any value that still did not survive the invariants (§3.6–3.8).
Timeframe ScalingBalancedThe horizon exponent δ of the scaling law: BarCount = 0 (constant bar count), Balanced = 0.15 (default: a mild tilt toward longer periods on fast charts, which the noise term alone under-corrects), TimeHorizon = 1.0 (constant wall-clock horizon).
Global Sensitivity1.0 (0.5–2.0, step 0.05)Divides every resolved MACD period: 2.0 → half the periods (twice as fast), 0.5 → double. Implemented as gain = 1/sensitivity inside the scaling, so the label and the effect agree on every timeframe.
Microstructure Noise Horizon (min)1.0 (0.0–30.0, step 0.5)ε of the scaling law: minutes of microstructure noise. Raises the noise term, which lengthens periods on fast charts. 1.0 suits liquid FX; 0 disables the term (with BarCount scaling you then get the reference periods verbatim everywhere — the useful baseline for comparing against a plain MACD).
Regime-Adaptive Filter BanktrueRun two MACD instances straddling the nominal periods and mix them by the smoothed Kaufman Efficiency Ratio: the responsive leg wins in trends, the smooth leg wins in chop. Off (or spread 0) gives a single classic MACD (§5.5).
Filter Bank Spread0.35 (0.0–0.8, step 0.05)Half-width of the bank, 0–0.8. 0 degenerates the bank to a single MACD (and switches it off); the default 0.35 turns 12/26 into 8/17 + 16/35.
Efficiency Ratio Period10 (3–60)Bars in the raw Kaufman ER that drives the blend. The weight actually used is smoothed over 2× this (a derived quantity, clamped to 5…100), because the raw ratio is far too twitchy to drive a blend.
Max Period Multiplier3.0 (1.0–8.0, step 0.25)Ceiling of the resolved scale. At M1 the default law wants ~2.6; raising the multiplier lets fast charts run even longer periods, lowering it keeps them closer to the reference set.
High Timeframe PolicyCanonicalCanonical (default): at and above the H1 anchor the scale never drops below 1.0, so D1/W1/MN run the classic 12/26/9 that the literature is calibrated on and daily traders expect. HorizonMatched: allow shrinkage toward a comparable wall-clock horizon, with a hard reliability floor of 0.35 (an EMA over fewer than ~4 bars is not a moving average any more).

Divergence Detection — 16 parameters

ParameterDefaultDescription
Show DivergencestrueMaster switch of the divergence engine: no pivots are scanned, nothing is drawn, no divergence alerts, and the panel's signal and statistics rows go quiet. The oscillator, crossovers and the confluence ladder are unaffected.
Divergence KindsRegularAndHiddenRegularOnly (reversal), HiddenOnly (continuation) or both (default). Definitions in §6.4.
Pivot Lookback (reference / manual)5 (2–40)Fractal legs required on each side of a pivot. It is simultaneously the confirmation delay (a pivot at bar c publishes only after bar c + lookback has closed), the prominence window and half of the minimum-separation invariant. Smaller = more pivots, sooner, noisier.
Pivot Prominence (x ATR)0.35 (0.0–5.0, step 0.05)Minimum prominence in ATR units: how far the extremum must stand beyond the deeper of the two neighbouring troughs (peaks). This is the ZigZag-style significance test that removes the micro-pivots behind most false divergences on fast timeframes. 0 disables it; the Scalping style uses 0.55.
Max Pivot Candidates6 (1–20)How many pairings are assessed for each new pivot before the strongest is taken. Raising it finds better pairings (especially divergences that span an intermediate pivot) at a small cost.
Min Pivot Distance (reference)8 (3–120)Minimum pivot separation in bars (reference). Also raised to 2 × Pivot Lookback by invariant — two pivots closer than that are usually one swing split in two — and capped at 180 days in automatic mode.
Max Pivot Distance (reference)100 (10–1000)Maximum pivot separation (reference); the candidate walk stops there. Raised to MinPivotDistance + 10 if inverted, capped at 730 days in automatic mode.
Min Price Leg (x ATR)0.75 (0.0–10.0, step 0.25)Minimum price move between the two pivots, in ATR units. Rejects divergences built on a flat price leg, which are geometry rather than signal.
Min Oscillator Leg (x RMS)0.10 (0.0–2.0, step 0.05)Minimum oscillator move between the two pivots, in units of the rolling mean absolute MACD. The scale-free counterpart of the price leg: it is what makes “a real disagreement” mean the same thing on every instrument.
Require Zero-Line Match (regular)trueThe classic Appel/Brown rule for regular divergences: bearish must be built entirely above zero, bullish entirely below. Hidden divergences are exempt — the rule is about exhaustion at an extreme, and a continuation pattern is not one.
Confirm With RSItrueHard veto for regular divergences: if the RSI does not move in the signal's direction, the candidate is rejected outright. RSI agreement is additionally graded into the pairing score and the quality score whether or not the veto is armed, so a hair's-breadth agreement is worth less than a decisive one (§6.5).
RSI Period (reference / manual)14 (2–100)RSI period (reference / manual). Used for the confirmation above and stored with each pivot.
Confirm With HistogramtrueSoft confirmation: the histogram's own agreement enters the pairing score and the quality score but never vetoes, because the histogram also contains the signal line and can legitimately lag.
Max Drawn Divergences25 (1–200)How many divergences are on the chart; the newest win and older ones lose their chart objects but keep their records (the learner still needs their outcomes). See the budgets note in §6.9.
Draw Only Most Recent N Bars1500 (50–100000)Only divergences ending within this many source bars of the live edge are drawn at all. A drawing budget, not a detection budget: older signals are still registered, resolved and learned from. Scaled inversely with the timeframe and capped at 1095 days in automatic mode.
Hidden: MTF Alignment GatetrueHard gate 9 (§6.6), specific to the hidden family and independent of Confluence Gate: a hidden candidate is rejected when the ladder strongly disagrees with its direction (debug reason hidden vs MTF flow (x)). Hidden divergences are continuation patterns — their edge is the higher-timeframe trend, so taking one straight into an opposing HTF flow is the classic trap.

Signal Filters — 21 parameters

ParameterDefaultDescription
Use Trend FiltertrueAdds the trend gate (hard, §6.6 #3) and the trend-alignment component of the quality score (component 9).
Trend EMA Period (reference / manual)50 (5–500)Trend EMA period (reference / manual), capped at 730 days in automatic mode.
Trend Slope Bars (reference / manual)5 (1–60)Bars over which the trend EMA's slope is measured. The slope is normalised per bar and per ATR, so the gate keeps its meaning across timeframes. Also sets the window of the volatility-regime scorer.
Max Counter-Trend Slope (ATR/bar)0.15 (0.01–2.0, step 0.01)ATR per bar. A hidden (continuation) signal is rejected when it fights the trend by more than this; a regular (reversal) signal only when the move is parabolic (3× this), because a reversal is expected to appear against the trend. In automatic mode the value is rescaled by sqrt(reference slope bars / resolved slope bars) to stay statistically comparable.
ATR GateAdaptiveAdaptive (default): the floor is the Nth percentile of this symbol's own realised ATR% distribution, so a quiet cross pair and Bitcoin are each judged against themselves — a fixed percent cannot work across instruments. Fixed: the reference percent, scaled by sqrt(barMinutes/60). Off.
ATR Period (reference / manual)14 (2–100)ATR period (reference / manual). The same ATR denominates pivot prominence, price legs, the trend slope, the outcome engine and the volatility floor.
Adaptive ATR Percentile20.0 (1.0–49.0, step 1.0)1–49. Lower is permissive (only the deadest bars rejected); 25 rejects roughly the quietest quarter of the symbol's recent history. The gate stays inert (permissive) until the model has max(VolWindow/2, 30) samples, because a percentile estimated from a handful of observations is noise, and a noisy floor silently deletes valid signals.
Fixed Min ATR % (reference at H1)0.05 (0.0–5.0, step 0.005)Fixed-mode floor, referenced at H1 and scaled by sqrt(barMinutes/60) (ATR as a percent of price shrinks with the square root of bar duration for a diffusion). Ignored — and reported — while the gate is Adaptive.
Use ADX FilterfalseAdds a directional-strength gate (off by default): a hidden signal needs ADX ≥ Min ADX (continuation needs a trend); a regular signal needs ADX falling over the slope window or ADX ≤ Min ADX + 15 (reversal needs exhaustion).
ADX Period (reference / manual)14 (2–100)ADX period (reference / manual). The platform's Directional Movement System is only instantiated when the filter is on.
Min ADX20.0 (1.0–90.0)ADX threshold used by the gate above.
Use Volatility Spike FiltertrueAdds quality component 11 — a scorer, not a gate: mean bar range over the resolved slope window vs ATR. >1.8×ATR = spike, pivots unreliable (0.25); <0.45×ATR = dead tape, little to trade (0.60); otherwise 1.0.
Use Momentum (falling knife) FiltertrueAdds quality component 10, the post-pivot follow-through. Despite the name it does not veto — Require Post-Pivot Follow-Through does.
Use Cluster / Repeat FiltertrueHard gate: rejects a candidate when an earlier same-direction divergence ended within MinPivotDistance bars and within 1 ATR of the current close — i.e. this is the same market event re-detected one pivot later.
Require Post-Pivot Follow-ThroughfalseTurns the follow-through measure into a hard gate. This is what separates a caught turn from a knife caught mid-fall on a scalping horizon.
Min Follow-Through (0-1)0.5 (0.0–1.0, step 0.05)The retraced fraction of the post-pivot range required: 0 = still sitting at the extreme, 1 = fully retraced, 0.5 = at least halfway back. Scale-free, so one threshold works on M1 and on D1.
Session FilterOffOff (default) / Auto — the symbol's own trading calendar, which is correct for 24/5 FX, 24/7 crypto, exchange equities and futures with a lunch break alike and needs no assumption about the broker's timezone — / ManualUtc. When Auto finds no calendar (some builds, crypto, a failed probe) it falls back to the manual window and says so in the log.
Manual Session Start (UTC hour)7 (0–23)Start of the explicit UTC window (bar times are UTC because the indicator declares TimeZones.UTC). Also the fallback used by Auto when the symbol exposes no calendar.
Manual Session End (UTC hour, exclusive)20 (0–24)End of the window, exclusive, and may be 24 — so 0–24 is the whole day. A start greater than the end wraps past midnight (22→6). Start == end is read as the whole day rather than as the empty set, which would silently reject every divergence with no way for you to see why.
Min Quality Score50.0 (0.0–100.0)The hard floor: below it a candidate is dropped, and with Debug Log the drop is printed with its score. Carries the ±10% timeframe bias in automatic mode.
Weak Signal Threshold65.0 (0.0–100.0)Below it a registered divergence is drawn in the weak colour instead of its family colour. Raised to the floor if inverted, so the two bands can never overlap.

Quality & Learning — 7 parameters

ParameterDefaultDescription
Adaptive LearningtrueOutcome tracking, the four learning buckets, quality component 13 and the panel's learning rows. Turn it off for a detector that is a pure function of parameters and data (the right choice when comparing configurations).
Learning Memory (outcomes)120 (10–2000)How many resolved outcomes the win rate is built from, per bucket. Also (with Max Drawn Divergences) determines the cap of the record list, because the records are the learning data.
Min Learning Samples12 (1–500)Below this many resolved outcomes in a bucket, component 13 is dropped from numerator and denominator rather than being treated as 50%: two trades are not a track record, and counting them as neutral-but-present would let a lucky pair move every subsequent score.
Persist Learning (LocalStorage)trueStore the counters in the platform's LocalStorage, keyed by symbol and resolved profile label, so M1 statistics never contaminate H4. Restored at start-up, written throttled and once more on destroy. A history reload resets them (§7.4).
Outcome Horizon (reference)60 (5–1000)Bars given to a signal to resolve before it is marked expired. Reference value, capped at 120 days in automatic mode: a horizon nobody would ever see resolved is not a measurement.
Outcome Target (x ATR)1.0 (0.1–10.0, step 0.1)Win distance in ATR multiples from the confirmation-bar close.
Outcome Stop (x ATR)1.5 (0.1–10.0, step 0.1)Loss distance in ATR multiples. The default 1.0 target against a 1.5 stop deliberately measures a conservative expectation: the win rate that results is the one a tight-target/loose-stop trader would actually experience.

Signal Markers — 10 parameters

ParameterDefaultDescription
Show Cross SignalstrueMaster switch of the crossover marker layer. The latch, the trigger outputs and the alerts keep working when it is off.
Marker StyleTextAndArrowTextAndArrow (default), TextOnly, ArrowOnly, None.
Marker WordingBuySellThe label text: BUY/SELL (default), LONG/SHORT, TURN UP/TURN DOWN, BULLISH/BEARISH. Zero-line crosses always read ABOVE 0/BELOW 0 so they cannot be mistaken for crossovers.
Bullish Signal Color“#00E676”Bullish marker colour (arrow and label).
Bearish Signal Color“#FF1744”Bearish marker colour.
Marker Font Size9 (6–22)Marker label size. Divergence labels follow this too — they are chart markers, not panel content, so they are deliberately not coupled to Panel Font Size.
Marker Label Offset (x oscillator scale)0.9 (0.0–5.0, step 0.1)Label clearance in units of the oscillator's own scale (the rolling mean absolute histogram, with fallbacks). Converted into whatever scale the outputs are plotted in, then limited to 40% of the visible band and stepped toward the zero axis, so a label can never be clipped out of the pane (§8.2).
Mark Only Closed BarsfalseMark only closed source bars. Off (default) marks the forming bar too and withdraws the marker if the cross does not survive to the close — faster, and honest about being provisional. On is strictly non-repainting.
Cross ModeSignalLineWhich crossover family the on-chart markers follow: SignalLine (default, the classic MACD / signal crosses), ZeroLine (ABOVE 0 / BELOW 0 only) or SignalAndZero (both, each with its own wording). Replaces the former Mark Zero-Line Crosses Too checkbox. The trigger outputs always stay bound to the signal-line latch — the event this indicator exists for — and the two alert toggles of group 10 stay independent of this choice (§8).
Max Cross Markers200 (5–2000)Hard cap on live marker objects; the oldest are evicted first. The back-fill after a reload is bounded by DrawRecentBars + 2× this value, so a deep history cannot stall the first paint (§8.3).

Divergence Appearance — 17 parameters

ParameterDefaultDescription
Draw StyleLineAndMarkersLineAndMarkers (default), LineOnly, MarkersOnly.
Mirror Divergences On Price ChartfalseAlso draw each divergence between its two price extremes on the chart itself (the orange/green lines in the top pane of the overview screenshot). Objects are tracked separately so cleanup cannot leak names.
Show Drop LinestrueDotted verticals from each end of the divergence down to the zero axis. They make the two oscillator legs directly comparable at a glance; the Scalping style turns them off to keep a busy fast pane readable.
Show LabelstrueThe text label on each divergence.
Label WordingPlainPlain: HIDDEN BEAR DIV 92% / BULL DIV 78%. Compact: HidBear 92% / RegBull 78%. Full: HIDDEN BEARISH DIVERGENCE - GRADE A - QUALITY 92%.
Show Grade (A/B/C) In LabelfalseAppend the A/B/C grade to the label.
Show Quality % In LabeltrueAppend the quality percentage to the label. On by default: it is the single most useful number on the chart, because it summarises all thirteen components.
Regular Bullish Color“#00E676”Regular bullish divergences.
Regular Bearish Color“#FF1744”Regular bearish divergences.
Hidden Bullish Color“#00BFA5”Hidden bullish divergences — teal by default, so a continuation is never mistaken for a reversal at a glance.
Hidden Bearish Color“#FF6E40”Hidden bearish divergences.
Weak Signal Color“#FFD54F”Any divergence whose quality is below Weak Signal Threshold, regardless of family. Amber by default.
Line Thickness2 (1–6)Line weight of the divergence line and of the price-chart mirror.
Line StyleSolidSolid (default), Dots, Dashes, Lines, DashesRare.
Bullish Marker IconUpTriangleIcon at both ends of a bullish divergence.
Bearish Marker IconDownTriangleIcon at both ends of a bearish divergence.
Object Z-Index5 (0–100)Z-index of the divergence line layer, clamped to 0…98: labels sit at +1 and crossover markers at +2, and the platform clamps ChartObject.ZIndex to 0…100 on the way in, so without the cap a user-set 99 or 100 would collapse all three layers onto one value and lose the intended paint order.

Info Panel — 19 parameters

ParameterDefaultDescription
Show Info PaneltrueMaster switch of the panel. When off, the cards are hidden (or the fallback text removed) and no refresh work is done.
Panel LayoutMergedCardMergedCard (default): one card, two sections, a hairline rule between them. SplitTopBottom: two cards on opposite vertical edges, but only when two boxes actually fit — otherwise it collapses onto one section with the full height budget rather than letting the cards overlap the plot. StatusCardOnly / SignalsCardOnly.
Panel SideLeftLeft (default), Right or Centre.
Vertical EdgeBottomWhich vertical edge is primary; in split mode the other section goes to the opposite edge.
Use Native Controls (else static text)trueBuild the panel from real chart controls (opaque cards pinned to the corner of the indicator window). Off — or on a build that cannot host controls — everything degrades to two corner-anchored static-text objects with the same content and the same priority selection (§10.3).
Panel Font Size11.0 (7.0–22.0, step 0.5)Cell font size. Also determines the row height, and therefore how many rows fit.
Panel Opacity0.90 (0.10–1.0, step 0.05)Card opacity. 0.90 default; the Scalping style uses 0.92.
Panel Margin (px)8.0 (0.0–60.0)Distance from the pane edge, in pixels. Also the reserve used when computing how many rows fit, so the card can never spill outside the pane.
Panel Background“#111823”Card background.
Panel Border“#2C3A4D”Card border.
Panel Text“#E6EDF3”Primary text colour.
Panel Label Text“#8FA3B8”Muted text colour (labels, and rows that carry no verdict).
Show Configuration SectiontrueThe configuration section: style, timeframe, resolved MACD triple, kernel, signal kernel, price input, period scale, filter-bank legs, pivot geometry, quality gate. The Scalping style turns it off — the configuration is the style.
Show Market SectiontrueThe market section: MACD line, signal, histogram, trend and slope, momentum, histogram strength, ATR% against the floor in force, session state, regime (ER), ADX, price, bar time.
Show MTF Confluence SectiontrueThe MTF section: the weighted confluence score and one row per available level.
Show Signals SectiontrueThe signals section: overall bias and the last divergence with its age, quality, legs and outcome.
Show Statistics SectiontrueThe statistics section: the census over the stats window, the win rate with its sample size, the average quality, and one row per learning bucket.
Stats Window (bars, reference / manual)100 (25–2000)Bars of recent history the panel's census and averages cover. A reference value: scaled like every other window in automatic mode (and capped at 365 days), literal in manual mode. On M1, 100 bars is under two hours of trading; on W1 it is two years — which is why it is a parameter rather than a constant.
Panel Refresh (ms)250 (50–5000)Minimum interval between panel rebuilds. The panel is also rebuilt immediately when something is dirty and re-fitted when the pane is resized.

Alerts — 15 parameters

ParameterDefaultDescription
Enable AlertstrueMaster switch of all three alert channels.
Alert: Signal-Line CrosstrueAlert on MACD/signal-line crossovers (the latch of §5.6, so it respects λ).
Alert: Zero-Line CrossfalseAlert on zero-line crosses. Off by default: on a fast chart this is the noisiest of the six triggers.
Alert: DivergencetrueAlert on registered divergences that clear Alert Min Quality and are effectively live (confirmation bar within two bars of the live edge).
Alert: MTF Confluence FlipfalseAlert when the sign of the weighted confluence score changes. At most one per source bar; a second flip inside the same bar is deferred to the next one rather than dropped.
Alert Min Quality70.0 (0.0–100.0)The alert bar for divergences — separate from, and normally above, Min Quality Score. Signals between the two are drawn and counted but stay silent; the relationship is reported at start-up.
Only On Closed Source BartrueEvaluate the last closed source bar, which makes alerts strictly non-repainting (default). Off evaluates the forming bar: earlier, at the cost of an alert that the close can still contradict. The Scalping style turns it off, because a scalper acts inside the bar.
Play SoundtrueSound channel.
Bullish SoundPositiveNotificationSound played for a bullish signal.
Bearish SoundNegativeNotificationSound played for a bearish signal.
Write Alerts To LogtrueLog channel: the full formatted message, invariant culture.
Show Alert PopuptruePopup channel: a platform notification with the caption Advanced MACD Pro, colour-coded by direction (green bullish, red bearish). On a build without the custom-notification API the attempt is made once, a NOTE is printed and the channel disables itself — log and sound still work.
Alert: MACD Trendline BreaktrueAlert family 5: a confirmed MACD close through a momentum support / resistance line. One alert per line generation, so a re-test cannot machine-gun the same break (§14.4).
Alert: Plan Level Reached (TP/SL)trueAlert family 6: plan lifecycle events (TP1_HIT, TP2_HIT, STOP_HIT). A stopped plan uses the bearish sound, a hit the bullish one; STALE raises nothing, because nothing happened (§13.8).
Alert Cooldown (source bars, 0 = off)0 (0–500)Minimum number of source bars between two alerts of the same family and direction; 0 (default) disables the check. The suppression is final for the event that tripped it — the scan watermark advances regardless — so the next event alerts normally once the cooldown has elapsed. Every freshness window in the alert path is scaled by the source / chart bar ratio, so a finer source on a coarser chart cannot silently swallow alerts it still journals (§11.3).

Advanced — 3 parameters

ParameterDefaultDescription
Debug LogfalseAdds one line per rejected candidate (with the reason), one line per registered divergence, the learning restore, and the timeframe parser's refusal reason. The first place to look when you want to know why nothing fired (§18.3).
Log Resolved Profile On StarttruePrints the resolved configuration at start-up: style, source and bar duration, mode, scale, the MACD triple with both kernels, the price input, the filter bank and its spread, λ, pivot geometry, auxiliary periods, gates, session, all four windows and the warm-up estimate. Read from the resolved settings, never from the dialog (§18.1).
Signal Journal (CSV lines to log)trueWrites three id-keyed, semicolon-separated, invariant-culture CSV streams into the platform log — AMP-JOURNAL (one line per live confirmed divergence), AMP-PLAN (plan lifecycle events) and AMP-OUTCOME (the learning verdict) — plus a one-off header line per instance. Live events only: a start-up or reload rescan never re-emits history, so the CSV stays duplicate-free across restarts (§16).

Trade Management — 12 parameters

Groups 11 and 12 of the parameter dialog
Group 11 (Signal Journal) and the whole of group 12 as the dialog shows them.
ParameterDefaultDescription
Show Trade Projection (Entry/SL/TP)trueMaster switch of the projection engine. Off removes every plan level, hint line, plan alert and AMP-PLAN line; registered divergences, their outcomes and the learning engine are unaffected (§13).
Stop SourcePivotStructurePivotStructure: beyond the divergence's pivot extreme plus Pivot Stop Buffer, falling back to the ATR ruler when the structure is on the wrong side of the entry or tighter than 0.25 ATR. AtrMultiple: Outcome Stop (x ATR) — the ruler the learning engine grades with, so the levels drawn are the levels the win rate describes (§13.2).
Plan TP1 (R multiple)1.0 (0.5–10.0, step 0.1)First target, in multiples of the plan's own risk.
Plan TP2 (R multiple)2.0 (1.0–20.0, step 0.5)Second target. A value not above TP1 is re-derived as 2 × TP1 and reported at start-up (§13.3).
Pivot Stop Buffer (x ATR)0.5 (0.0–3.0, step 0.05)Clearance beyond the pivot extreme in PivotStructure mode. 0 puts the stop exactly on the pivot.
Max Visible Trade Plans3 (1–10)How many plans are on the chart at once; the oldest lose their graphics first. A plan that loses its slot keeps running its lifecycle, alerting and journalling — visibility and management are separate budgets (§13.7).
Projection Length (chart bars)120 (10–2000)How far to the right of the confirmation bar the four levels are drawn, in chart bars.
Show Projection LabelstrueThe ENTRY / SL -1R / TP1 +1.0R / TP2 +2.0R texts and their HIT / VOID / STALE suffixes. Off keeps the lines and drops the words.
Entry Line Color“#90A4AE”Entry level, and the BE STOP hint.
Stop Line Color“#FF5252”Stop level, and the TRAIL hint. Targets follow the signal's direction colour.
Show Break-Even & Trailing HintstrueThe two management lines of §13.6. Suggestions only — the indicator has no trade-facing API.
Trailing Stop (x ATR chandelier)3.0 (1.0–10.0, step 0.25)Chandelier distance of the TRAIL hint from the best close since entry. It ratchets in the position's favour only, refreshes once per closed chart bar, and its backward reach is profile-derived.

MACD Trendlines — 7 parameters

Groups 13 and 14 of the parameter dialog
Groups 13 and 14 — the momentum trendlines and the session markers.
ParameterDefaultDescription
Enable MACD TrendlinestrueMaster switch of the momentum-trendline engine (§14): lines, break markers, the alert family and the two panel rows all follow it.
Trendline Min Pivot Gap (reference / manual)5 (2–200)Minimum separation of the two anchor pivots. A reference value anchored at H1, so automatic mode rescales it like every other reference (§3.3). It also sets the redraw throttle: max(10, 2 × gap) closed bars.
Trendline Max Slope (x RMS/bar)0.25 (0.01–2.0, step 0.01)Rejects anchor pairs steeper than this, in multiples of the rolling mean absolute MACD per bar — the oscillator's own scale, so the gate means the same thing on every symbol and timeframe.
Trendline Break Threshold (x RMS)0.10 (0.0–1.0, step 0.01)How far beyond the line the MACD must close for the break to count. 0 means any close through the line.
Show Trendline Break MarkerstrueThe TL BREAK text at the breaking bar, coloured by the direction of the break.
Support Trendline Color“#26C6DA”The support line (price-low pool).
Resistance Trendline Color“#FFA726”The resistance line (price-high pool).

Session Markers — 4 parameters

ParameterDefaultDescription
Show Session MarkerstrueMaster switch of the session-marker layer (§15). Pure context: no gate, score, alert or output reads it.
Marker Times (UTC, HH:MM list)“07:00,13:30”The UTC times to mark — the London and New York opens by default. Separators: comma, semicolon, space. Each entry is HH:MM or a bare hour; unusable entries are skipped individually, the parsed set is sorted ascending, and a list with nothing valid in it draws nothing and is reported once.
Marker Window (chart bars)300 (50–2000)Rolling window of closed chart bars the markers are kept for; older ones are removed. The total object count is additionally capped at 1500, oldest first, so wide-bar charts cannot flood the object store.
Marker Color“#546E7A”Deliberately muted: context, not signal.

18. Diagnostics & the Log

18.1 What is printed at start-up

With Log Resolved Profile On Start (default on) you get the resolved configuration — the numbers the indicator is actually running, read from the resolved settings object rather than from the dialog:

[Advanced MACD Pro] style=UNIVERSAL | source=h1 (60.00 min/bar) | mode=Automatic | scale=1.000
[Advanced MACD Pro] MACD 12/26/9 kernel=Exponential signal kernel=Exponential input=Close bank=on (+/-35%)
[Advanced MACD Pro] filter bank: responsive 8/17  smooth 16/35  spread=35%
[Advanced MACD Pro] early entry: lambda=1.00 (band 0% of the mean |histogram|)
[Advanced MACD Pro] pivots: lookback=5 prominence=0.35ATR distance=[10..100]
[Advanced MACD Pro] aux: RSI=14 ATR=14 ADX=14 TrendEMA=50 slopeBars=5 ER=10
[Advanced MACD Pro] gates: ATR=adaptive p20 = 0.0311% maxCounterSlope=0.150 minQ=50.0 weakQ=65.0
[Advanced MACD Pro] session=off | follow-through>=0.50 | volatility window=240 bars
[Advanced MACD Pro] windows: normalisation=104 stats=100 drawRecent=1500 bars | warm-up ~78 bars
[Advanced MACD Pro] outcome horizon=60 bars (target 1.0ATR / stop 1.5ATR)
[Advanced MACD Pro] trade plans: on | stop source: pivot structure | TP1 1.0R / TP2 2.0R | risk band 0.5-6 ATR | max visible 3
[Advanced MACD Pro] MACD trendlines: on | min gap 5 | max slope 0.25 RMS/bar | break threshold 0.10 RMS
[Advanced MACD Pro] plan lifecycle: alerts on | mgmt hints on (trail 3.0 ATR)
[Advanced MACD Pro] session markers: on (2 times, window 300 bars)
[Advanced MACD Pro] signal journal: on (AMP-JOURNAL / AMP-PLAN / AMP-OUTCOME lines)
[Advanced MACD Pro] MTF ladder: h2 h3

The warm-up line counts the deeper filter-bank leg (35) plus the signal kernel (9) plus a quarter of the normalisation window (26) plus 8. The ladder line lists the derived levels for an h1 source — the next two rungs up are h2 and h3; if you pin Confluence Timeframes = H4,D1 it lists those instead.

18.2 Every warning and note, and what it means

MessageConditionWhat was done about it
WARNING: Fast Period (x) is not below Slow Period (y)the pair was transposedswapped, not flattened; the resolved triple is printed
WARNING: Min Pivot Distance (x) exceeds Max Pivot Distance (y)inverted windowresolved to a non-empty window, printed
WARNING: Weak Quality Threshold (x) is below Min Quality Score (y)overlapping bandsraised to the floor so the bands cannot overlap
NOTE: Alert Min Quality … at or below the quality gatealert bar ≤ gatenothing to fix — every signal that passes the gate also alerts
NOTE: Alert Min Quality … ABOVE the quality gatealert bar > gatesignals between the two are drawn and counted but stay silent; the message names the number that alerts
WARNING: Slow Period (x) is above the hard ceiling (1000) / same for Fasta template or preset pushed a value outside the declared rangeclamped, printed — the ceilings equal the parameters' own MaxValue, so the dialog cannot produce this
WARNING: X = a was resolved to bmanual mode only: a value did not survive the profile invariantsthis is the drift check for the whole manual parameter set — it exists because a slow leg once capped at 800 while the dialog accepted 1000, silently
NOTE: the manual session window is 09-09 UTC, which is emptystart == end under end-exclusive hoursread as the whole day; use Session Filter = Off to disable it
NOTE: this symbol exposes no trading calendarAuto session with no MarketHoursfalls back to the manual window, whose hours are printed
NOTE: Fixed Min ATR % is ignored while ATR Gate = Adaptiveboth settells you which one is in force and how to use the other
WARNING: Custom Timeframe 'x' is not a timeframe this platform recognisesparse failurethe chart timeframe is used instead; the message lists every accepted form
WARNING: only N bars of TF history are loaded but the resolved configuration needs about Minsufficient historynames the three fixes: scroll back, raise Min Source Bars, or use CurrentChart
NOTE: Signal Lambda is 0.00band closedinformational: crossovers are detected at the exact crossing
NOTE: individual parameter values … are the ones the 'SCALPING' style wrotea style is activeediting them has no effect until the style is set back to Universal
STYLE 'SCALPING' is ACTIVE…a style is activeprinted unconditionally — a style silently overriding a hundred parameters is the one thing a user must never have to guess about
NOTE: this platform build refused the popup notificationno custom-notification APIprinted once; alerts continue through log and sound
NOTE: Plan TP2 (x R) is not above Plan TP1 (y R); TP2 …TP2 ≤ TP1 in the dialog or in a templateTP2 re-derived as 2 × TP1; the resolved pair is printed in the profile log
NOTE: trade plans are generated from divergence signals; with …Show Trade Projection on while Show Divergences is offinformational: no signal, therefore no plan; the note names the switch that owns it
NOTE: the Higher-TF MACD line reads the MTF confluence ladder; with …the line on while Enable MTF Confluence is offthe twelfth output stays empty; the note explains why
NOTE: confluence rung ‘x’ is not HIGHER than the source …an explicit ladder entry at or below the source timeframethat entry is skipped, the rest of the list is kept, and the surviving ladder is printed
WARNING: Session Marker Times ‘x’ contains no valid HH:MM entries; …unparseable listthe layer draws nothing rather than guessing a default time
NOTE: Manual Session Start (x) is after End (y) UTC; the …a wrapped session windowread as wrapping past midnight (22→6), and printed as such
NOTE: Manual Session hours (x, y) are outside the declared …hours beyond 0–24clamped into the declared range, printed
NOTE: Source Timeframe is Custom but Custom Timeframe Name is empty, …Custom with no namethe chart timeframe is used instead
NOTE: Trading Style ‘x’ overwrote every signal, filter, adaptation, …a non-Universal style is activeinformational, and it names exactly what stays yours: colours, icons, sounds, Z-index, line style, the session-marker times / window / colour, the source timeframe and the two diagnostics toggles

18.3 Debug Log, and what is not in it

Debug Log = true adds three things, and only three — it is not a firehose:

Culture-neutral by construction Every diagnostic goes through one invariant-culture formatter, so a log pasted from a comma-decimal system reads identically to one pasted from a dot-decimal system, and the numbers in the log always match the numbers in the panel, the labels and the alerts.

SECTION 2 — HOW TO USE

The working trader's guide: every glyph, every panel row, every decision.

19. Installation & First Launch

  1. Get the source into cTrader. Open Automate → New → Indicator, paste the whole of AdvancedMacdPro.cs, and press Build. It compiles against cAlgo.API with no dependencies and no external packages. (A pre-built .algo can be installed by double-clicking it or by dragging it onto the chart.)
  2. Attach it to a chart. It is an oscillator, so it opens in its own pane under the price chart — it is not an overlay (IsOverlay = false), and it declares AutoRescale = true and TimeZone = UTC.
  3. Read the log. The first thing it prints is the resolved profile (§18.1) — the actual periods, windows and gates in force, not the dialog's reference values. If a parameter combination was contradictory you get a WARNING or a NOTE saying what was reconciled and to what. If history is too short for the resolved configuration, it says so and names the three fixes.
  4. Give the pane some height. The panel fits itself to the pane: a tall pane shows more rows, a short one hides the low-priority cells and, if even one row cannot fit, hides the card rather than covering the plot.
  5. Check the panel's TF row. It shows the resolved source timeframe and whether the profile is auto or manual. Everything else in the panel is derived from those two facts.
  6. Let the warm-up finish. The oscillator needs its slow leg, the signal line and part of the normalisation window before it plots; the start-up log prints the estimate. The adaptive ATR gate stays inert (permissive) until its volatility model has enough samples — the panel's ATR row reads WARM until then.
First-run checklist Log shows the resolved profile → panel TF row shows the timeframe you meant → histogram is coloured (not all NaN) → ATR row shows OK rather than WARM → the MTF rows list the levels you expected. If any of those is wrong, §37 tells you where to look.

20. Reading the Pane — Every Glyph

The oscillator pane with divergences and crossover markers
The oscillator pane with every layer switched on. The table below is the legend: each row is one glyph you can see here, what it means and what to check before acting on it.
GlyphWhat it meansWhat to check
MACD linefast MA − slow MA of the chosen price input, possibly the blend of two such pairs (§5.5)its side of zero, and whether it is above or below the signal
Signal linea moving average of the MACD line, with its own kernel choicethe gap between the two is the histogram
Zero line (dotted)an explicit output series, so it renders on every build and can be hidden from the legendregular divergences are required to sit on the correct side of it
Bright green barhistogram ≥ 0, expanding and at/above its own average sizebullish momentum that is actually building
Muted green barhistogram ≥ 0, but contracting or below averagebullish but tired — the usual home of a regular bearish divergence's second leg
Bright red barhistogram < 0, expanding and strongbearish momentum building
Muted red barhistogram < 0, weakbearish but tired
BUY label + up trianglethe crossover latch flipped bullish on that source bar. With λ < 1 it may be an advanced trigger: the histogram has climbed out of the early-entry band on its way to the crossinghover it: the tooltip names the kind of cross, the λ in force, the MTF score and the oscillator values
SELL label + down trianglethe latch flipped bearishon a forming bar it is provisional and will be withdrawn if the cross does not survive the close
ABOVE 0 / BELOW 0a zero-line cross, marked whenever Cross Mode includes the zero line (ZeroLine or SignalAndZero)neutral wording on purpose, so it cannot be read as a crossover signal
Divergence line + end markersa registered divergence between two confirmed pivots, drawn in the oscillator pane between the two plotted extremescolour tells you family and strength: green/red = regular, teal/orange = hidden, amber = quality below the weak threshold
Divergence labelHIDDEN BEAR DIV 92% — family, direction, quality. Optionally the A/B/C gradethe percentage is the 13-component score of §6.7, not a probability
Drop lines (dotted verticals)from each end of the divergence down to the zero axisthey let you compare the two oscillator legs directly
Mirror line on the price chartthe same divergence drawn between its two price extremes (top pane of the overview screenshot)the fastest way to see whether the price leg is a real swing or a shallow diagonal
Divergence dot (output series)plotted at the confirmation bar of every registered divergence — the first bar on which it could have been acted uponnever at the pivot; that would be look-ahead
Dotted orange linethe MACD Higher TF output: the first confluence rung's MACD line, strict-mapped, same display unitsit is context — it never triggers anything by itself; compare its side of zero with the primary line's
Cyan / orange sloped linemomentum support / resistance through the confirmed pivots' MACD readings (§14)the slope cap and break threshold are in x RMS, so they compare across symbols and timeframes
TL BREAK labelthe MACD closed through its momentum line, on a closed source barthe histogram buckets on the same bar: bright confirms, muted leads
ENTRY / SL -1R / TP1 +1.0R / TP2 +2.0R on the price chartthe trade plan of a registered signal, from its confirmation bar (§13)solid = live, dotted = history; then read PState and Path in the panel
BE STOP / TRAIL n.nAbreak-even and chandelier suggestions of a managed planthey are drawings, not orders — the indicator places none
Thin grey verticals on the price chartsession markers at the configured UTC times (§15)pure context; they filter nothing and never interact with a signal
Why labels always sit between the line and the zero axis A label pushed away from zero lands outside the auto-rescaled range on exactly the divergences with the deepest oscillator legs — the object exists (the tooltip and the object list still work) but nothing is ever painted. So the nudge is always toward zero, limited to a quarter of the visible band, and clamped inside it.

21. The Info Panel, Line by Line

The fused info panel
The fused card (Panel Layout = MergedCard): label/value cells, up to three columns per row, with the configuration and market sections above the hairline rule and the signals and statistics sections below it. The card pins itself to the corner chosen by Panel Side and Vertical Edge.

Cells are colour-coded: bright = a verdict (bullish/bearish, OK/LOW, OPEN/CLOSED), muted = context with no verdict (labels, timestamps, counts). Rows that cannot be computed print - rather than a guess.

21.1 Configuration section

RowReads asMeaning
StyleSCALPINGonly shown when a style is active — a reminder that it owns the parameters below it
TFh1 auto / m15 manualthe resolved source timeframe and which adaptation mode produced the profile
MACD12/26/9the resolved fast/slow/signal triple — not the dialog's reference values
KernelExponential, Hull…the kernel of the two MACD legs (resolved)
SigKernelExponentialshown only when the signal kernel differs from the MACD kernel; if it is absent, the signal line follows the MACD kernel
InputClose, VP-Adj, Typical, Weighted, Median, Heikinthe price series the oscillator is built from
Scalex1.00, x2.59the timeframe scale factor of §3.3 — how much longer the periods are than the H1 reference
Bank8/17+16/35the filter bank's two leg pairs, shown only when the bank is on
Pivotslb5 10-100pivot lookback and the [min…max] separation window actually in force
GateQ>=50the quality floor a candidate must clear to be registered at all

21.2 Market section

RowExampleMeaning
MACD line+0.00042the oscillator in display units, signed, coloured by side of zero
Signal+0.00031the signal line, same units
Histogram+0.00011the difference, coloured by side
TrendUP +0.07 / FLAT +0.00 / DOWN -0.11the trend EMA's slope in ATR per bar over the resolved slope window. UP/DOWN means beyond the counter-trend limit; FLAT means inside it
MomentumBUILDING / FADING / STEADY|histogram| vs the previous bar. BUILDING is coloured by the histogram's side
StrengthSTRONG / NORMAL / WEAK|histogram| against its own rolling mean: ≥1.5× is STRONG, ≥1× NORMAL, below WEAK. This is the same test that picks the bright histogram buckets
ATR0.041% OK / 0.031% p20ATR as a percent of price, the verdict against the floor in force, then the floor itself and the percentile it came from. WARM means the adaptive model has not armed yet (the gate is permissive); LOW means this bar would be rejected; OFF means no gate
SessionOPEN / CLOSED symbol calendar (5 sessions)shown only when a session filter is on; names the source of the verdict
RegimeTREND 0.71 / MIXED 0.44 / CHOP 0.18the smoothed Kaufman Efficiency Ratio — the weight that mixes the filter bank. ≥0.55 TREND, ≥0.35 MIXED, below CHOP
ADX24.6shown only when the ADX filter is on
Price / Bar1.09412 / 10-10 14:00the source bar's close and open time (UTC)

21.3 MTF section

RowExampleMeaning
MTF+62 BULLthe weighted confluence score (−100…+100) and its state: BULL ≥ +33, BEAR ≤ −33, otherwise NEUTRAL
h2, h4, D1, …+75 BULLone row per available ladder level, labelled with that timeframe's own short name (an h1 chart with a derived ladder shows h2 and h3; a pinned H4,D1 shows those). A level with too few bars or no closed mapping is simply absent — it contributes nothing, not even to the denominator
TL Sup / TL Res-1.3E-003 down / BROKEN 2.2E-004the two momentum trendlines (§14): slope and state, direction-coloured the moment a line is broken. Shown only while Enable MACD Trendlines and the signals section are on

21.4 Signals and statistics sections

RowExampleMeaning
BiasBULLISH / Bull (below 0) / NEUTRALMACD vs signal, with the zero-line context spelled out: a bullish cross below zero is a correction, not a trend
LastHidBear A / none in windowthe most recent divergence inside the stats window: family, direction, grade
Age12 barshow old that signal is, in source bars — so an old signal can never be mistaken for a fresh one
Quality92%its 13-component score, coloured against the weak threshold
Legs1.3A/0.27Rthe price leg in ATR units and the oscillator leg in RMS units — the two measurements the gates are built on
Outcomewon +1.4A / lost -1.5A / expired / open +0.6/-0.2Athe measured result in ATR multiples, or the running best/worst excursion while it is still open
PlanSHORT @ 1.12300direction and entry of the most recent signal's trade plan; coloured by direction
SL / TP1 / TP21.12455 -1R, 1.12217 +1.0R, 1.12098 +2.0Rthe plan's own levels, each labelled with its R multiple
R:R1:1.0reward:risk of TP1 against the plan stop
PStateRUNNING / TP1 HIT / TP2 HIT / STOPPED / STALEthe lifecycle state. The TP1-hit fact stays visible after the plan moves on, so a plan that paid half and then stopped does not read as a plain STOPPED
Path+0.55R / -1.86Rbest / worst excursion since entry in plan-R units — the HIT / VOID story, verifiable against the candles at a glance
Regular / Hidden3 bull/1 bearthe census over the stats window, split by family and direction
Pending2signals in the window whose outcome has not resolved yet
Drawn7how many divergences are currently on the chart (against Max Drawn Divergences)
Win rate58% (43) / collecting / offthe win rate with its sample size in brackets — the sample size is the number, the percentage is the adjective. collecting means fewer resolved outcomes than Min Learning Samples
Expect / PF-0.06R, 0.85expectancy and profit factor on the learning ruler (Outcome Target / Outcome Stop ATR multiples), not on the plan's R ruler. They sit beside Win rate because they are computed from the same resolved outcomes; PF caps at 99+ when nothing has lost
MFE/MAE+0.8/-1.1Athe mean best and worst excursion of the window's resolved records, in ATR multiples — the label the v1.0 manual described as the “open” outcome row
Avg qual71.4%mean quality of the signals in the window: a proxy for how selective the current configuration is
Reg Bull, Reg Bear, Hid Bull, Hid Bear62% (21)one row per learning bucket — the four families do not share a track record, because they are not the same hypothesis

22. The Parameter Dialog & Presets

Modify indicator dialog
The Modify indicator dialog. Groups are numbered in the order the engine uses them, so reading the dialog top to bottom reads the pipeline: what style is in charge → which series to compute on → how to build the oscillator → how to adapt it → what to detect → what to reject → what to learn → how to draw it → how to notify you.

22.1 The order to change things in

  1. Trading Style — decide whether you want a hand-built configuration or the scalping one. Everything below is overwritten by a style, so choose it first.
  2. Source Timeframe — the single most consequential choice. Leave it on CurrentChart unless you specifically want an oscillator computed on another series.
  3. Adaptation Mode — keep Automatic unless you are deliberately testing fixed periods. In automatic mode treat every “(reference)” number as an anchor, not as a setting.
  4. What you want to see — groups 4 (divergences), 7 (markers) and 8 (appearance). These are the ones you will actually tune.
  5. How picky it is — group 5. Loosen here if you see nothing, tighten here if you see too much (§27).
  6. Only then the oscillator internals (group 2) and the adaptive engine (group 3).

22.2 Saving what you built

Use the platform's own template mechanism (Save as template in the dialog) to keep a configuration, and remember two things: a template stores the values as shown, so if a style is active it stores the style's values — and a style re-applies itself on every initialisation regardless of what the dialog shows. To keep a tuned variant of the scalping setup, set Trading Style = Universal first, then save.

22.3 The Lines tab

All twelve outputs can be recoloured, restyled, thickened or hidden individually there (§12.1). Hiding Hist Bull Weak and Hist Bear Weak, for example, leaves only the strong buckets — a quick way to see momentum that is actually building. Hiding Zero Line removes the dotted reference without affecting any detection.

23. Kernel Gallery — the Same Chart, Nine Kernels

Each screenshot below was taken with a different Moving Average Type; everything else is the chart's own configuration. Compare three things: how far the MACD line sits from the turns in price, how much noise survives in the histogram, and how early or late the BUY/SELL markers land relative to the swing. The table columns are the kernel's definition, its warm-up and what it is good for — the same facts as §5.3, so you can match a picture to a formula.

KernelWarm-upWhat to look at in the screenshot
Simplenthe reference. Equal weighting shows the raw cost of no weighting: flat-topped turns and a visibly late cross
Weightednless lag than Simple, more noise than Exponential — the middle of the classic three
Exponentialnthe default and the one everything else is judged against (shown in the overview and panel screenshots, §20–17)
Wildernsmoother than an EMA of the same period (α = 1/n vs 2/(n+1)): the histogram is quieter and the crosses later
Hulln + √nzero group delay. Turns are sharp, the histogram flips early, and the markers land closest to the extreme
DoubleExponential2none de-lag stage: noticeably earlier than EMA, without Hull's overshoot
TripleExponential3ntwo de-lag stages: the most aggressive of the exponential family, and the one most likely to overshoot a spike
KaufmanAdaptiven+1fast in trends, nearly flat in chop — look at how quiet it goes sideways
Triangular2(n/2+1)double-smoothed: the quietest and latest. Useful as a context line, poor as a trigger
TimeSeriesna least-squares line evaluated at the newest sample: reacts to slope, so it overshoots on single-bar spikes
Simple kernel
Moving Average Type = Simple — equal weights, the reference behaviour.
Weighted kernel
Weighted — linearly weighted, n…1.
Wilder kernel
Wilder — RMA smoothing, α = 1/n.
Hull kernel
Hull — WMA(2·WMA(n/2) − WMA(n), √n). The scalping choice.
DEMA kernel
DoubleExponential — 2·EMA − EMA(EMA).
TEMA kernel
TripleExponential — 3E1 − 3E2 + E3.
Kaufman adaptive kernel
KaufmanAdaptive — KAMA, efficiency-ratio adaptive.
Triangular kernel
Triangular — SMA of an SMA.
Time series kernel
TimeSeries — least-squares linear regression value.
Kernel and signal kernel are two decisions Each of the nine screenshots above uses the default Signal Line MA Type = SameAsMacdLine, so the crossover stays symmetric. If you set the signal line to Exponential under a de-lagged MACD line, the cross moves later and smooths out — which is exactly what the classic Appel definition does, and exactly what a scalper usually does not want.

24. Trading Divergences

24.1 Reading one signal in five seconds

  1. Colour: which family? Green/red = regular (reversal). Teal/orange = hidden (continuation). Amber = quality below your weak threshold, whatever the family. If you only trade reversals, you have just filtered half the labels without reading anything.
  2. Label: how good? The percentage is the 13-component score. Treat it as a ranking, not a probability: 90% means every component that could be evaluated came back strong.
  3. Grade (if shown): what kind of disagreement? A = the oscillator turned back through the zero line, or the family-aware delta is ≥ 0.60 of the oscillator's scale — genuine exhaustion. B = a clear but shallower disagreement. C = a diagonal, the weakest form.
  4. Position: where in the move? A regular bullish divergence wants price at a lower low after a downtrend, with the trend row reading DOWN or FLAT and momentum FADING. The same label printed halfway up a strong rally is a different (worse) trade.
  5. Context: what do the higher timeframes say? The MTF row. A bullish divergence against MTF −62 BEAR is a counter-trend scalp; with +62 BULL it is a pullback entry.

24.2 The two playbooks

Regular (reversal)Hidden (continuation)
Claimthe price extreme is not confirmed by momentum → the move is exhaustingmomentum is stronger (or weaker) than the shallow price pullback suggests → the trend resumes
Where it worksat the end of an extended move, ideally with ADX falling and the trend slope flatteninginside an established trend, on the first pullback that makes a shallower extreme
What the gates demandcorrect side of the zero line; counter-trend move not parabolic (≤ 3× the slope limit); ADX falling or low if the ADX filter is onmust not fight the trend beyond the slope limit; ADX ≥ Min ADX if the ADX filter is on
Typical failurecatching a knife: the divergence is real but the trend has one more leg. This is what Require Post-Pivot Follow-Through is fora trend that has already ended: the “continuation” is the last pullback. Check the trend row and the higher timeframes
Target/stop used for its statisticsthe same for both: Outcome Target × ATR against Outcome Stop × ATR from the confirmation bar's close. The win rate you see per family is measured on exactly that, so the number is comparable to how you would trade it only if your own target/stop ratio is similar

24.3 When to ignore a divergence that was drawn

The entry is the confirmation bar, not the pivot Everything the indicator measures — entry price, ATR, target, stop, the trend slope, the session — is taken at pivot + lookback, the first bar on which the pivot could have been known. When you compare your own results with the panel's win rate, use the same reference; entering at the pivot price is a number nobody can actually achieve, and it is the most common reason a manual tally disagrees with the measured one.

25. Trading Crossovers

25.1 What you are being told

A BUY/SELL marker is a transition of the crossover latch (§5.6). With Signal Sensitivity Lambda = 1.00 that is exactly the classic MACD/signal crossing. Below 1.00 it is an advanced trigger: the histogram has climbed out of a band measured in its own average size, on its way to a crossing that has not happened yet.

λBehaviourUse when
1.00 (default)the classic crossing; fewest false triggers, latest entryyou want comparability with any other MACD, or you trade swings
0.96–0.98a small advance; the trigger often lands one bar earlierintraday, when one bar of the move matters
0.92 (Scalping style)a real advance: the histogram must close 8% of its typical distance to zeroscalping, where waiting for the full cross costs more than the confirmation is worth
0.80 (minimum)aggressive; expect triggers inside consolidations that never complete the crossrarely. The latch guarantees no duplicates and no misses, but it cannot guarantee the crossing follows

25.2 The two things that make the advance safe

25.3 Live vs closed-bar marking

Mark Only Closed Bars = false (default) evaluates the forming source bar: you see the cross the moment it happens, and the marker is withdrawn if the cross does not survive to the close. Set it to true for a strictly non-repainting marker trail — the price of that is one bar of latency, which on H4 is four hours. Only On Closed Source Bar does the same job for alerts, independently.

25.4 Combining the two signal types

The highest-quality combination this product can show you A crossover in the direction of a recent high-quality divergence, with MTF agreeing and the ATR row reading OK. The divergence tells you the move is exhausting, the cross tells you it has turned, the ladder tells you the bigger picture is not against you, and the ATR row tells you the market is awake enough to pay for the trade. Three of the four alone is a discretionary trade; all four is what the gates were built to find.

26. Multi-Timeframe Workflow

  1. Decide what the ladder is for. Directional context (keep SoftPenalty) or a hard veto (HardGate). Soft is the better default: a divergence against the higher timeframe is not worthless, it just has to earn a higher quality score.
  2. Let it derive, or pin it. Empty Confluence Timeframes takes the next Confluence Levels timeframes above the source from the standard ladder. Pin it when you have a view — an H1 trader who cares about H4 and D1 and nothing else should say H4,D1.
  3. Check the ladder actually resolved. The log prints MTF ladder: H4 D1, and the panel shows one row per available level. A missing row means that series has too few bars or no closed mapping yet — not an error, and it contributes nothing rather than dragging the score toward zero.
  4. Read the score, not the state. BULL/BEAR/NEUTRAL are the ±33 bands; the number tells you how much of the ladder agrees. +100 means every level is above zero, above its signal and rising.
  5. Keep strict mapping on unless you specifically want the intrabar view. With it on, the ladder only ever quotes higher-timeframe bars that have really closed, so a registered signal's confluence — and therefore its quality — cannot change after a history reload.
  6. Remember each level is independently adaptive. An H4 level under an M5 primary is not your M5 settings read on H4 data; it is the profile the indicator would resolve if you opened H4 directly. That is why the ladder stays meaningful across a wide timeframe span.
SourceDerived ladder (2 levels)Typical use
M1M2, M3very fast scalping; consider pinning M15,H1 instead — the derived neighbours of M1 are almost the same information
M5M10, M15scalping; pinning M30,H1 or H1,H4 gives a genuinely higher view
M15M30, H1the balanced intraday default
H1H2, H3intraday swing; H4,D1 is the more common pin
H4H6, H12swing; pin D1,W1 for the classic combination
D1D2, D3position; pin W1,MN
Why pinning is often better than deriving on fast charts The derived ladder always takes the next timeframes up, which on M1/M5 are barely different from the source. The confluence score is most informative when the levels are genuinely slower — three to ten times the source duration.

27. The Gates in Practice — Loosening and Tightening

27.1 The order to investigate in

  1. Turn on Debug Log. Every rejection prints its reason and, where it is numeric, the value against the threshold: [Skip BullHidden] ATR% 0.0091 below floor 0.0311 q=0.0 @ …, [Skip BearRegular] trend too strong to fade (-0.412) q=0.0 @ …, [Skip BullRegular] quality below threshold q=47.3 @ ….
  2. Read the reasons for the last dozen rejections. If they are all the same gate, that gate is your binding constraint — change it and nothing else.
  3. Change one thing, then re-read. Every gate interacts with the quality score, so changing three at once tells you nothing.
  4. Check the panel's Avg qual row before and after: it is the fastest summary of how selective your configuration is.

27.2 Which knob for which symptom

SymptomLoosen withTighten with
Too few divergencesPivot Prominence ↓ (0.35 → 0.20), Min Price Leg ↓, Min Oscillator Leg ↓, Min Quality Score ↓the same four, up
Divergences too close together / one swing counted twice—Min Pivot Distance ↑, or Pivot Lookback ↑ (which also raises the minimum by invariant)
Missing the wide, high-conviction onesMax Pivot Distance ↑, Max Pivot Candidates ↑—
Signals in dead markets—ATR Gate = Adaptive with a higher Adaptive ATR Percentile (20 → 30), or Fixed with a higher percent
Signals during news spikes—Use Volatility Spike Filter on (it is a scorer, so also raise Min Quality Score to make it bite)
Catching falling knives—Require Post-Pivot Follow-Through on with Min Follow-Through 0.5–0.6
Counter-trend losses—Confluence Gate = HardGate with Min Confluence Score 60–70, and/or Max Counter-Trend Slope ↓
No signals outside your trading hoursSession Filter = OffAuto (the symbol's own calendar) or ManualUtc with your window
Same event signalled twiceUse Cluster Filter offkeep it on — it exists for exactly this
Hidden divergences never appearcheck Divergence Kinds, and note that hidden signals must not fight the trend — Max Counter-Trend Slope ↑ or Use Trend Filter off—
Everything is grade Cthat is the zero-line rule and the family-aware delta doing their job: you are looking at shallow diagonals. Require Zero-Line Match off will admit more, at lower average quality—
Do not loosen the prominence filter first Pivot Prominence (x ATR) is the cheapest thing to lower and the most expensive to pay for: it is what removes micro-pivots, and micro-pivots are the raw material of most false divergences on fast timeframes. If you want more signals, lower the quality floor first and watch the win rate per family — that way you can see what the extra signals are worth instead of assuming it.

28. Alerts Workflow

  1. Choose the channels. Write Alerts To Log, Show Alert Popup, Play Sound — three independent switches under the Enable Alerts master. The popup is the one that reaches you when the terminal is in the background; it is colour-coded green for bullish and red for bearish.
  2. Choose the triggers. Crossovers (on by default) are the frequent ones; divergences (on) are the selective ones; zero-line crosses and confluence flips are off by default and both are noisy on fast charts.
  3. Set the alert bar. Alert Min Quality (default 70) is deliberately above Min Quality Score (default 50): you want to see more signals on the chart than you want to be interrupted about. The start-up log tells you which side of the quality gate your alert bar ended up on.
  4. Decide about intrabar alerts. Only On Closed Source Bar (default on) makes alerts strictly non-repainting. Off is earlier and can be contradicted by the close.
  5. Know the arming rule. Nothing alerts during the initial history pass — otherwise attaching the indicator would replay every historical crossover at you. Alerts arm when the first pass reaches the live edge, and the guard indices are seeded at that moment.
Alert rates At most one crossover alert and one zero-line alert per evaluated source bar, one divergence alert per end pivot, and one confluence alert per regime change (with at most one per source bar — a second flip inside the same bar is deferred to the next bar, not dropped). A history reload re-arms everything and cannot fire stale alerts.

29. Reading Your Own Statistics

30. Timeframe & Instrument Guide

30.1 What the defaults resolve to per timeframe

The same table as §3.6, kept here because this is the one you will actually consult. Defaults: Balanced scaling, ε = 1.0 min, sensitivity 1.0, Canonical high-timeframe policy, spread 0.35, reference set 12/26/9.

ChartMACD f/s/sigpivot lbdist min–maxRSI/ATRtrend EMAhorizonnorm winvol winmin ATR%Q floorCharacter
M131/67/23918–161201079726830000.006555.0periods nearly tripled by the noise term: averaging 26 one-minute bars does not deliver the signal-to-noise of 26 hourly bars. The ATR floor is tiny, the quality floor slightly raised
M519/41/14714–12617727516428800.014455.0the common scalping chart; still visibly longer than the reference set
M1515/33/11612–1121560671329600.025055.0the balanced intraday default
M3013/29/10510–1061555631164800.035455.0close to the reference set already
H112/26/9510–1001450601042400.050050.0the anchor: scale exactly 1.00, reference values verbatim
H412/26/9510–1001450601041500.100045.0Canonical policy pins the periods; only the ATR floor and the quality bias move
D112/26/9510–1001450601041500.244945.0the classic daily MACD, with a volatility floor that reflects daily ranges
W112/26/9510–1001450181041500.648145.0wall-clock caps bite: the outcome horizon is 18 weeks, not 60 weeks, because nobody waits five years for a result
MN12/26/9510–241424101041501.363845.0caps dominate everything: max pivot distance 24 months, trend EMA 24 bars, horizon 10 months
If you want D1/W1 to scale too Set High Timeframe Policy = HorizonMatched. The scale is then allowed to drop below 1.0 (floor 0.35), so a weekly chart measures a comparable wall-clock horizon instead of a comparable bar count. Canonical is the default because that is what daily and weekly traders expect and what the literature is calibrated on.

30.2 Instrument notes

InstrumentWhat to know
Liquid FX majorsthe reference case. Defaults are tuned here; ε = 1.0 min is a sensible microstructure horizon
Crosses and low-volatility pairsthis is why ATR Gate = Adaptive is the default: 0.05% per bar is a dead market on Bitcoin and an active one on EURCHF, so a fixed percent cannot work across instruments. The adaptive floor judges each symbol against its own realised distribution
Metals / indiceswider ranges make the ATR floor and the price legs scale automatically. If pivots feel too coarse, lower Pivot Prominence before touching anything else
Crypto (24/7)the session filter's Auto mode may find no trading calendar — the indicator says so in the log and falls back to the manual UTC window. Either set that window deliberately or use Session Filter = Off, which is the honest choice for a market that never closes. The noise floor has no absolute component, so instruments quoted below ~1e-3 are not silenced
Futures spreads / negative-price instrumentsthe noise floor is derived from |price|, so a negative price gets the same relative floor as its positive mirror. A price of exactly zero has no scale to derive one from and degrades to exact comparison
Heikin-Ashi chartsthe bar duration is taken from the base timeframe (the full HEIKINASHI prefix is handled), and Price Input = HeikinAshi will not transform such a series twice — it uses the close, because the candles are already Heikin-Ashi
Tick / Renko / Range chartsthere is no fixed bar duration, so the engine estimates one from the median of up to 2000 open-time deltas and flags the spans as approximate. Everything derived inherits that approximation. If you need exactness, keep the chart and set Source Timeframe to a time-based one
Symbols with a lunch break or short sessionsSession Filter = Auto reads the symbol's own calendar, so equity and futures sessions need no hand-configured hours; the panel's Session row shows OPEN/CLOSED and names the source of the verdict

SECTION 3 — TIPS

The habits that make the tool pay for itself, and the mistakes that make people abandon it.

31. The Golden Rules

  1. Read the start-up log before you read the chart. It prints the configuration actually in force — resolved periods, both kernels, gates, windows, warm-up estimate — and every contradiction it reconciled. Two minutes there saves a week of guessing why the indicator “ignores” a setting.
  2. Treat “(reference)” parameters as anchors. In automatic mode you are moving a curve, not a number. If you want literal periods, switch Adaptation Mode to Manual — and then read the drift warnings, because manual mode promises to honour what you typed.
  3. Never change two gates at once. The quality score is a weighted mean; changing two inputs tells you nothing about either. Change one, look at Avg qual and the per-family win rates, then decide.
  4. Sample size beats percentage. Every win rate in this product is printed with its n. Respect it.
  5. Family matters. A regular bullish and a hidden bearish divergence are different hypotheses with different track records. Narrow Divergence Kinds to what your bucket statistics actually support.
  6. Quality is a ranking, not a probability. 92% means “every component that could be evaluated came back strong”. It does not mean 92 chances in 100.
  7. Use the confirmation bar as your reference. That is where the indicator measures entry, ATR, target and stop. Comparing your fills to the pivot price compares yourself to a trade nobody can take.
  8. Give the pane room. The panel fits itself to the pane height and hides low-priority cells first; a two-row-tall pane will show you almost nothing and that is by design, not a bug.
  9. Keep strict MTF mapping on unless you have a specific reason. It is what makes a registered signal's quality stable across history reloads.
  10. Let the warm-up finish before judging. The oscillator, the ATR gate and the learning buckets all need bars. A chart attached ten minutes ago on M1 knows nothing yet, and the panel says so (WARM, collecting).
  11. Turn learning off when comparing configurations. Adaptive Learning = false makes the detector a pure function of parameters and data, which is the only fair way to A/B two setups.
  12. If you see nothing, read the skip reasons. Debug Log = true prints one line per rejected candidate with the number that rejected it. “No signals” is always a specific gate, and it is named.

32. Recommended Presets by Trading Style

Only the parameters that differ from the shipped defaults are listed. Everything not mentioned stays as it is.

32.1 Scalping, M1–M5

Use the built-in style: Trading Style = Scalping. It writes 95 parameters (§4.2), including the Hull kernel on the volume-price-adjusted input, λ = 0.92, every precision gate armed, follow-through required, and quality floors of 60/72/76. Then consider:

ParameterValueWhy
Confluence TimeframesM15,H1 (M1–M5 charts)the derived ladder on M1 is M2/M3 — almost the same information. Genuinely slower levels are worth more
Draw Only Most Recent N Bars600–800a fast chart accumulates many signals; you only trade the recent ones
Max Cross Markers100keeps the pane readable at M1 density
Session FilterAuto (already set)scalping a dead session pays the spread for nothing; the fallback window is 07–20 UTC

32.2 Intraday, M15–H1 (the default configuration, lightly adjusted)

ParameterValueWhy
Confluence TimeframesH4,D1the classic intraday context pair
Min Confluence Score55–60soft penalty that actually bites on a counter-trend signal
Require Post-Pivot Follow-Throughon, Min Follow-Through = 0.5the cheapest large improvement in reversal quality
Show Drop Lineson (default)on a slower chart the pane has room for them, and they make the two legs comparable
Alert Min Quality72–75interrupt only for signals you would actually take

32.3 Swing, H4–D1

ParameterValueWhy
High Timeframe PolicyCanonical (default)D1 should run 12/26/9 — that is what the literature and every other platform mean by a daily MACD
Moving Average TypeExponential (default)de-lagged kernels earn their overshoot on fast charts, not on slow ones
Confluence TimeframesD1,W1 (from H4) or W1,MN (from D1)one and two octaves up
Confluence GateHardGate, Min Confluence Score = 60a swing held for days should not fight the bigger picture
Outcome Horizon / Target / Stopreference 60, target 2.0, stop 2.5a swing hold, measured on a swing scale; then the win rate describes your trade, not a scalp
Pivot Prominence0.5slow charts have room to demand better-formed pivots
Mark Only Closed Barsonon H4/D1 one bar of latency costs nothing and buys a strictly non-repainting trail

32.4 Position, W1–MN

ParameterValueWhy
Adaptation ModeAutomatic (default)the wall-clock caps are what make these timeframes usable: a 60-bar horizon on MN would be five years
Pivot Lookback3–4there are few bars; the default 5 can starve the pivot pool
Min Pivot Distance / Max Pivot Distance5 / 40same reason, expressed in separation
Stats Window40–60100 weekly bars is two years; you want the recent regime
Draw Only Most Recent N Bars100–150the caps already shrink it; this keeps the pane legible
Use ADX Filteron, Min ADX = 20position trades need a trend that exists

32.5 Crypto, 24/7

ParameterValueWhy
Session FilterOffthe honest setting for a market that never closes. Auto will usually find no calendar and fall back to a UTC window you did not choose
ATR GateAdaptive, percentile 25–30a fixed ATR% is meaningless across crypto instruments; the adaptive floor judges each against itself
Microstructure Noise Horizon1.0–2.0 min24/7 feeds carry real microstructure noise on the fast timeframes
Moving Average TypeHull or KaufmanAdaptivecrypto alternates hard between trend and chop; KAMA admits it, Hull keeps up with it
Use Volatility Spike Filteron (default)funding and listing events make pivots unreliable for a few bars; the scorer marks those signals down

32.6 Divergence-only, minimal chrome

ParameterValueWhy
Show Cross Signalsoffno BUY/SELL markers; the oscillator and the divergences only
Alert: Signal-Line Cross / Zero-Line Crossoffinterrupts only for divergences
Div StyleLineOnly, Show Drop Lines offthe cleanest possible pane
Min Quality Score / Weak / Alert65 / 78 / 80few, high-conviction labels
Max Drawn Divergences10only the recent history matters

32.7 The “plain MACD” baseline (for comparison)

ParameterValueEffect
Timeframe ScalingBarCountδ = 0 and ε = 0 give a scale of exactly 1.0, so the reference periods are used verbatim on every timeframe
Microstructure Noise Horizon0.0
Regime-Adaptive Filter Bankoffone MACD, not a bank
Signal Lambda1.00the classic crossing, no early entry
Moving Average Type / Signal Line MA TypeExponential / ExponentialAppel's definition exactly
Price Input / Output Scale / Output GainClose / Raw / 1.0comparable numbers, pane for pane, with any other MACD

32.8 The three style presets, value by value

§32.1–§32.7 above are manual configurations you assemble yourself. Since v2.0 three of them are also one click away: Trading Style = Scalping, Swing or Position. Every preset writes the same complete surface — 134 of the 162 parameters — so two charts on one style can never disagree about a gate, a window or a plan level because one of them kept a template value. What deliberately stays yours in every style: colours, icons, sounds, Z-index, line style, the session-marker times / window / colour, the source timeframe, and the two start-up diagnostics toggles.

The tables below list only the values that differ from the Universal defaults — everything else the preset writes is the default, pinned so a saved template cannot leak into it. 47 values differ for Scalping, 17 for Swing, 61 for Position.

Scalping — what it changes

ParameterUniversal defaultScalping writes
Timeframe & Source
Min Confluence Score25.060.0
Min Source Bars8001500
MACD Core
Price InputCloseVolumePriceAdjusted
Moving Average TypeExponentialHull
Signal Sensitivity Lambda1.00.92
VP Window (bars, reference / manual)2012
Automatic Adaptation
Timeframe ScalingBalancedBarCount
Global Sensitivity1.01.6
Filter Bank Spread0.350.30
Max Period Multiplier3.02.0
High Timeframe PolicyCanonicalHorizonMatched
Divergence Detection
Pivot Prominence (x ATR)0.350.55
Max Pivot Candidates610
Min Price Leg (x ATR)0.751.0
Min Oscillator Leg (x RMS)0.100.20
Max Drawn Divergences2530
Draw Only Most Recent N Bars15001200
Signal Filters
Max Counter-Trend Slope (ATR/bar)0.150.12
Adaptive ATR Percentile20.025.0
Fixed Min ATR % (reference at H1)0.050.02
Use ADX Filterfalsetrue
Min ADX20.018.0
Require Post-Pivot Follow-Throughfalsetrue
Min Follow-Through (0-1)0.50.55
Session FilterOffAuto
Min Quality Score50.060.0
Weak Signal Threshold65.072.0
Quality & Learning
Learning Memory (outcomes)120200
Min Learning Samples1210
Outcome Stop (x ATR)1.51.2
Signal Markers
Max Cross Markers200150
Divergence Appearance
Show Drop Linestruefalse
Info Panel
Panel Margin (px)8.06.0
Show Configuration Sectiontruefalse
Stats Window (bars, reference / manual)10080
Panel Refresh (ms)250200
Alerts
Alert: MTF Confluence Flipfalsetrue
Alert Min Quality70.076.0
Only On Closed Source Bartruefalse
Trade Management
Plan TP1 (R multiple)1.00.8
Plan TP2 (R multiple)2.01.5
Pivot Stop Buffer (x ATR)0.50.35
Projection Length (chart bars)12080
Trailing Stop (x ATR chandelier)3.02.5
MACD Trendlines
Trendline Min Pivot Gap (reference / manual)54
Trendline Max Slope (x RMS/bar)0.250.35
Trendline Break Threshold (x RMS)0.100.08

Swing — what it changes

ParameterUniversal defaultSwing writes
Timeframe & Source
Min Confluence Score25.035.0
Min Source Bars8001200
MACD Core
Signal Sensitivity Lambda1.00.96
Automatic Adaptation
Regime-Adaptive Filter Banktruefalse
Filter Bank Spread0.350.25
Divergence Detection
Pivot Prominence (x ATR)0.350.40
Max Pivot Candidates68
Signal Filters
Adaptive ATR Percentile20.015.0
Session FilterOffAuto
Min Quality Score50.055.0
Weak Signal Threshold65.068.0
Quality & Learning
Learning Memory (outcomes)120150
Outcome Target (x ATR)1.01.5
Signal Markers
Mark Only Closed Barsfalsetrue
Alerts
Alert Cooldown (source bars, 0 = off)03
Alert Min Quality70.072.0
Trade Management
Projection Length (chart bars)120150

Position — what it changes

ParameterUniversal defaultPosition writes
Timeframe & Source
Confluence Levels (higher TFs)23
Confluence GateSoftPenaltyHardGate
Min Confluence Score25.045.0
Min Source Bars8001000
MACD Core
Fast Period (reference / manual)1218
Slow Period (reference / manual)2639
Signal Period (reference / manual)912
VP Window (bars, reference / manual)2030
Automatic Adaptation
Timeframe ScalingBalancedTimeHorizon
Global Sensitivity1.00.85
Regime-Adaptive Filter Banktruefalse
Filter Bank Spread0.350.25
Efficiency Ratio Period1014
Max Period Multiplier3.04.0
High Timeframe PolicyCanonicalHorizonMatched
Divergence Detection
Divergence KindsRegularAndHiddenRegularOnly
Pivot Lookback (reference / manual)57
Pivot Prominence (x ATR)0.350.30
Min Pivot Distance (reference)812
Max Pivot Distance (reference)100200
Min Price Leg (x ATR)0.751.5
Min Oscillator Leg (x RMS)0.100.15
RSI Period (reference / manual)1420
Max Drawn Divergences2515
Draw Only Most Recent N Bars15002000
Signal Filters
Trend EMA Period (reference / manual)50100
Trend Slope Bars (reference / manual)58
Max Counter-Trend Slope (ATR/bar)0.150.20
ATR Period (reference / manual)1420
Adaptive ATR Percentile20.010.0
Fixed Min ATR % (reference at H1)0.050.10
Use ADX Filterfalsetrue
ADX Period (reference / manual)1420
Require Post-Pivot Follow-Throughfalsetrue
Min Follow-Through (0-1)0.50.60
Min Quality Score50.065.0
Weak Signal Threshold65.078.0
Quality & Learning
Min Learning Samples1215
Outcome Horizon (reference)60120
Outcome Target (x ATR)1.02.0
Outcome Stop (x ATR)1.52.0
Signal Markers
Show Cross Signalstruefalse
Mark Only Closed Barsfalsetrue
Divergence Appearance
Label WordingPlainFull
Show Grade (A/B/C) In Labelfalsetrue
Line Thickness23
Info Panel
Stats Window (bars, reference / manual)100150
Panel Refresh (ms)250500
Alerts
Alert: MTF Confluence Flipfalsetrue
Alert Cooldown (source bars, 0 = off)06
Alert Min Quality70.082.0
Trade Management
Plan TP1 (R multiple)1.01.5
Plan TP2 (R multiple)2.03.0
Pivot Stop Buffer (x ATR)0.50.75
Max Visible Trade Plans32
Projection Length (chart bars)120240
Trailing Stop (x ATR chandelier)3.04.0
MACD Trendlines
Trendline Min Pivot Gap (reference / manual)58
Trendline Max Slope (x RMS/bar)0.250.15
Trendline Break Threshold (x RMS)0.100.12
Session Markers
Show Session Markerstruefalse
Style, then timeframe A style never touches the timeframe. Pick Scalping on M1 and you get scalping behaviour at M1 parameters; pick the same style on H1 and you get scalping behaviour at H1 parameters, because the adaptive engine re-derives every reference underneath (§3.3). Set Trading Style = Universal to take manual control again — the values the style wrote stay in the dialog as your starting point.

33. What NOT to Do

MistakeWhy it hurtsDo this instead
Judge the indicator on the first 200 bars of a freshly loaded chartthe oscillator, the ATR gate and the learning buckets are all still warming up; the panel says WARM and collecting for a reasonread the warm-up estimate in the log and wait for it
Set Slow Period = 900 in automatic mode and expect 900it is a reference value: the scaling law multiplies it and the ceiling caps itread the resolved triple in the panel's MACD row or in the log; use manual mode for literal periods
Lower Pivot Prominence to zero to “see more”micro-pivots are the raw material of false divergences; you will get many labels and a collapsing win ratelower Min Quality Score first and watch what the extra signals are worth
Read the label percentage as a probabilityit is a weighted mean of normalised components, not a frequencycalibrate it against your own per-family win rates, which are frequencies
Trade hidden divergences like reversalsa hidden divergence is a continuation claim; entering it as a reversal puts your stop on the wrong side of the structureuse the colour: teal/orange means “with the trend”
Turn on every filter at maximum strictnessthe gates multiply; you will see one signal a month and learn nothing from itarm the two that address your actual failure mode (usually follow-through and confluence), then measure
Compare statistics across timeframeslearning is keyed per symbol and per resolved profile labelthat is a feature: judge M1 on M1
Attach it to a chart with 300 bars of history and a 1000-bar slow legnothing can plot; you will conclude the indicator is brokenthe warning names three fixes: scroll back, raise Min Source Bars, or use CurrentChart
Leave Alert: Zero-Line Cross on, on M1the zero line is crossed constantly; you will mute the product and miss the divergence alertsit is off by default for exactly this reason
Edit parameters while a style is activethe preset rewrites them on every initialisation; your edits vanishset Trading Style = Universal first — the style's values stay in the dialog
Use two instances with different source timeframes and expect one paneleach instance has its own panel, namespace and learning storethat is fine — just move one panel to another corner (Panel Side / Vertical Edge)

34. Performance & Chart Hygiene

35. Verifying the Non-Repaint Claim Yourself

The claim is specific, so the test can be too. Do this once on a symbol you care about; it takes five minutes.

  1. Record the state. On a chart with a decent history, note the three most recent divergence labels (family, quality, position) and the last few BUY/SELL markers. A screenshot is enough.
  2. Force a rebuild. Scroll the chart far to the left so the platform downloads deeper history, then back to the live edge. The indicator detects the change and rebuilds everything from scratch (§2.6).
  3. Compare. The same divergences must be there, with the same quality numbers, the same colours and the same anchors. If a quality number changed, Strict Non-Repaint MTF Mapping is off and the confluence component was re-scored against a now-closed higher-timeframe bar — which is exactly what the switch is for.
  4. Switch timeframe and back. Same result; the rebuild path is the same one.
  5. Watch the forming bar. A crossover marker on the live bar may appear and then disappear if the cross does not survive to the close. That is the documented provisional behaviour, not repainting of a confirmed signal: closed bars are back-filled exactly once and never revisited.
  6. Check a pivot's publication time. A pivot at bar c can only be acted upon from bar c + Pivot Lookback onwards, and the divergence dot sits at that confirmation bar — never at the pivot. Count the bars between the pivot and the dot: it is the lookback, every time.
  7. Replay it if your build has bar-by-bar replay. Step through the last 200 bars. Signals must appear at the same bars with the same labels as the static chart shows — the pivot scanner advances confluence, volatility and outcomes to their per-confirmation state precisely so that a bulk pass and a live pass agree.

36. FAQ

QuestionAnswer
Does it repaint?Confirmed signals do not: pivots publish only after their right leg closes, outcomes latch, marker anchors come from bar open times, and a history reload rebuilds rather than patches. What legitimately moves is the forming bar's oscillator value and its provisional marker, plus the confluence score if you switch strict mapping off. §2.5 lists both sides completely, and §35 is a five-minute test
Does it place trades?No. AccessRights.None — it cannot. It draws, logs, alerts and measures; you execute
Why is my MACD 31/67/23 on M1 when I set 12/26/9?Because those are reference values anchored at H1 and automatic mode rescaled them: at M1 the scaling law wants ~2.59× longer periods, since averaging 26 one-minute bars does not deliver the signal-to-noise of 26 hourly bars. The panel's MACD row and the start-up log show the resolved triple. Set Adaptation Mode = Manual for literal 12/26/9
Is the quality percentage a probability?No. It is a weighted mean of up to thirteen normalised components (§6.7). Use it to rank and to threshold; use the per-family win rates for frequencies
Why do I see no divergences?In order of likelihood: not enough history (the log says so); the ATR gate rejecting everything (ATR row reads LOW); the quality floor too high for this instrument (Avg qual sits just under it); pivots too coarse (Pivot Prominence); or a hard gate — Debug Log names it per candidate
Why is the panel missing?Either Show Info Panel is off, or the pane is too short for even one row — in which case the card hides itself rather than covering the plot. Drag the pane taller
Why does ATR say WARM?The adaptive volatility model needs max(VolWindow/2, 30) samples before it will state a percentile floor. Until then the gate is inert (permissive) rather than guessing — a floor estimated from a handful of bars silently deletes valid signals
Why does Win rate say collecting?Fewer resolved outcomes in that bucket than Min Learning Samples (default 12). Two trades are not a track record, so the component is left out of the quality score entirely rather than being counted as 50%
Can I compare it with a plain MACD?Yes — use the baseline preset of §32.7 (BarCount scaling, ε = 0, bank off, λ = 1, EMA both, Close/Raw/1.0). The scale then reads x1.00 on every timeframe and the numbers are directly comparable
Why is the same setup a different quality on another timeframe?Two reasons, both intended: the quality floor itself carries a ±10% timeframe bias in automatic mode, and the components are normalised against ATR and the oscillator's own scale, which differ per timeframe. The score is designed to mean “strong for this instrument and timeframe”, not “the same number everywhere”
Why are hidden divergences a different colour?So a continuation claim is never mistaken for a reversal at a glance. Teal = hidden bullish, orange = hidden bearish, green/red = regular, amber = below the weak threshold in any family
Where are my popups?Show Alert Popup must be on and the build must support the custom-notification API. If it does not, one NOTE is printed at the first attempt and the channel disables itself — the log line and the sound still fire. Sounds never play during backtesting or optimisation
I turned the markers off and back on. Are the old ones lost?No. The back-fill watermark is parked at “nothing built” while the layer is off, so re-enabling rebuilds the visible window. (An earlier build advanced the watermark instead, which lost every older marker until a history reload)
Can a cBot read the signals?Yes — twelve chart-indexed output series (§12). The four event series (bull/bear trigger, bull/bear divergence) are the machine-readable channel; NaN means “no event on this bar”. The divergence dot is placed at the confirmation bar, so acting on it is not look-ahead
Does it work on tick / renko / range charts?Yes, with an estimated bar duration (median of up to 2000 open-time deltas), because those charts have no fixed one. Everything derived inherits the approximation. For exactness, keep the chart and set Source Timeframe to a time-based timeframe
Two copies on one chart — do they collide?No. Object names are namespaced with the instance id, and the learning store is keyed by symbol and resolved profile. Move one panel to another corner so they do not overlap visually
Why is the first attach on a deep history slower than the next ones?One full pass over the loaded bars, plus marker back-fill within its budget and the initial outcome scan. After that everything is incremental. The budgets of §34 are what keep that pass bounded
What does (reference / manual) in a parameter name mean?That the value is a reference anchored at H1 and rescaled in automatic mode, but taken literally in manual mode. It is in the name so the dialog cannot mislead you
Why is there no plan on my last divergence?Four possible reasons, in the order to check them: Show Trade Projection is off; Show Divergences is off (plans are generated from signals — the start-up log says so); the plan lost its Max Visible Trade Plans slot, in which case it is still managed, alerted and journalled but not drawn; or the ATR / entry at the confirmation bar was not a usable positive number, in which case no half-drawn plan is produced at all (§13.1, §13.7)
Why does my plan say STALE?The outcome horizon elapsed with neither the stop nor TP2 touched. The idea neither worked nor failed inside the window it was measured in: levels go dotted, ENTRY carries STALE, an EXPIRED journal line is written, and no alert fires, because nothing happened (§13.5)
TP1 says HIT but the plan is STOPPED. Bug?No — that is the plan telling the truth: half the position paid, then the stop was touched. TP1 HIT is not a terminal state, and the panel keeps the fact visible after the plan moves on (§13.5)
Both the stop and a target were touched on the same bar. Which won?The stop, always. OHLC cannot reveal the intrabar order, so the engine fills the pessimistic side. The learning engine applies the identical rule, so the win rate is not flattered either (§13.5)
Do the trendlines repaint?No. Break detection runs on closed source bars only and each line generation announces itself once, which is why the engine has no “closed bars only” toggle (§14.3)
A TL BREAK fired but price did nothing. What is it for?A momentum trendline breaking before price does is a lead, not a trigger: it never registers a divergence, never moves the quality score and never creates a plan. Read it against the histogram buckets and the ladder (§14.5)
How do I get the signals into Excel?Keep Signal Journal on, copy the log, split on ;, use the AMP-JOURNAL-HEADER line as the header, and join AMP-PLAN / AMP-OUTCOME onto AMP-JOURNAL by id (§16.3)
I restarted the terminal and the journal did not re-print my history. Why?By design. All three streams are history-gated: a rescan re-resolves the same records and emits nothing, so the CSV stays duplicate-free across restarts. The journal describes what happened while you were watching (§16.2)
My weekly chart shows several session lines inside one bar. Correct?Yes — markers are occurrence-complete: a wide bar carries every configured time inside it, one line per occurrence, up to the 1500-object cap (§15.2)
What is the difference between R:R in the plan block and Expect / PF in the statistics?Two rulers. The plan measures in its own R multiples (Plan TP1 / Plan TP2 against the plan stop); expectancy and profit factor are computed on the learning ruler (Outcome Target / Outcome Stop ATR multiples) from the same resolved outcomes the win rate comes from. Set Stop Source = AtrMultiple if you want the two rulers to coincide (§13.2, §21.4)
Does the MACD Higher TF line generate signals?No. It is the first confluence rung plotted for context, strict-mapped and in the primary line's display units. The ladder's score is what gates and grades signals; the line is how you see that score's input (§9, §12.1)

37. Troubleshooting

SymptomFirst checkFix
Blank panethe start-up logit either says history is too short (scroll back, raise Min Source Bars, or use CurrentChart) or names a parameter contradiction
Blank pane, plenty of historySource Timeframea custom name the platform does not know falls back to the chart timeframe with a warning; a fixed timeframe your broker does not publish has no bars at all
No signals at allDebug Log = trueread the skip reasons; §27.2 maps each one to a knob
Far too many signalsAvg qual and the family win ratesraise Min Quality Score and Pivot Prominence; arm follow-through; consider HardGate confluence
Divergence labels invisible but objects existpane height and AutoRescalelabels are clamped inside the visible band, but a pane too short to plot the oscillator cannot show them; also check that the output series are not hidden in the Lines tab
Markers missing on old barsDraw Only Most Recent N Bars / Max Cross Markersboth are budgets; raise them (and read §34 first)
Panel shows - everywherewarm-upthe oscillator has not produced a value yet; the log's warm-up estimate says when it should
No MTF rowsthe log's MTF ladder: line(none available) means the higher-timeframe series do not exist for this symbol/broker, or Enable MTF Confluence is off, or strict mapping has not yet got two closed HTF bars
Session filter rejects everythingthe log's session NOTEAuto with no symbol calendar falls back to the manual window — set it deliberately, or use Off. A start equal to the end is read as the whole day, not as empty
Alerts never fireEnable Alerts, then the trigger switches, then Alert Min Qualitythe start-up log states whether your alert bar ended up above or below the quality gate. And nothing alerts during the initial history pass — that is by design
No popup, log and sound finethe one-time NOTEthe build has no custom-notification API; the channel disabled itself after one attempt
Statistics look wrong after a reconnect—they were reset, correctly: they are a statistic of the records in the current window, and a reload discards those records. The store is repopulated from the fresh pass
Slow on 100k+ bars§34the drawing budgets and the confluence level count are the two real levers; the engine itself is incremental
Numbers in the log use a comma decimal—impossible by construction: every diagnostic is formatted with the invariant culture. If you see one, it came from the platform, not from this indicator
No plan levels on the chartShow Trade Projection, then Show Divergencesplans are generated from registered divergences only; the start-up log names the switch that owns the behaviour. Also check Max Visible Trade Plans — a plan can be managed without being drawn (§13.7)
Plan levels drawn but no plan alertsAlert: Plan Level Reached (TP/SL), Enable Alerts, Alert Cooldowncooldown suppression is final for the event that tripped it; set it to 0 while testing. STALE never alerts by design (§11.3)
No trendlines at allEnable MACD Trendlines, then the pivot poollines need two qualifying confirmed pivots with at least Trendline Min Pivot Gap between them and a slope inside Trendline Max Slope. On a quiet chart one or both lines are legitimately absent (§14.2)
Trendline breaks fire too often / neverTrendline Break Thresholdit is in x RMS: raise it toward 0.20–0.30 for fewer, stronger breaks, lower it toward 0.05 for earlier ones. Do not “fix” it by changing the slope cap, which decides whether a line exists at all (§14.2)
Session markers missingMarker Times, then the start-up loga list with no valid HH:MM entry draws nothing and says so once. Remember they are UTC and appear on closed chart bars inside Marker Window only (§15)
No AMP-* lines in the logSignal Journal (CSV lines to log)if it is on, the events you are looking for happened during the history pass: the streams are live-only. The header line is printed once per instance regardless (§16.2)
MACD Higher TF line is emptyEnable MTF Confluence, then the rung's historywith the ladder off there is nothing to read (the log says so); a rung with too few bars or no closed mapping contributes nothing rather than a stale value (§9)

38. Glossary

TermMeaning in this product
ATRAverage True Range on the source series. The yardstick of every volatility-scaled rule: pivot prominence, price legs, trend slope, outcome target/stop, the volatility floor. A mean-true-range fallback covers its warm-up so early pivots are still measurable
RMS (oscillator leg)the rolling mean absolute MACD over NormWindow bars — the oscillator's own scale, and the unit in which the oscillator leg of a divergence is measured
Scale factorthe output of the scaling law for the resolved bar duration (panel row Scale, log field scale). 1.00 at H1
Reference valuea parameter expressed at the H1 anchor and rescaled in automatic mode; literal in manual mode
Pivota fractal extremum with Pivot Lookback bars on each side, filtered by prominence, published only after its right leg has closed
Prominencehow far the extremum stands beyond the deeper of the two neighbouring troughs (peaks), in ATR units
Confirmation barpivot + lookback: the first bar on which the pivot could have been known. The entry, ATR, gates and alerts are all evaluated here
Regular / hiddenreversal / continuation divergence families. Both are bullish off a low pivot and bearish off a high one
Grade A / B / Cthe strength of the oscillator's disagreement: A = it turned back through zero (or ≥0.60 of scale), B = ≥0.30, C = a shallow diagonal
Quality0–100 weighted mean of up to thirteen normalised components; unavailable components are dropped from numerator and denominator
Latchthe sequential ±1 crossover state. Guarantees one trigger per oscillator excursion — never a duplicate, never a miss — which a local two-bar test cannot do once the early-entry band is open
Lambda (λ)early-entry sensitivity. Band = (1−λ) × mean |histogram|
Filter banktwo MACD instances (responsive, smooth) mixed by the smoothed Efficiency Ratio
ER / RegimeKaufman Efficiency Ratio: |net move| / path length, smoothed. Panel bands: TREND ≥ 0.55, MIXED ≥ 0.35, CHOP below
Confluence scorethe weighted mean of the ladder's ±100 state scores; BULL ≥ +33, BEAR ≤ −33
Ladderthe higher-timeframe levels, each with its own fully adaptive profile; weights 2.0 (primary) / 1.0 / 0.6 / 0.4
Follow-throughthe fraction of the post-pivot range already retraced in the signal's direction, 0…1
Outcomewon (+1) / lost (−1) / expired (+2) / pending (0), resolved on closed bars against ATR-multiple target and stop within the horizon
BestMove / WorstMovemaximum favourable / adverse excursion in ATR units, latched
Bucket / familyone of four learning populations: regular bullish, regular bearish, hidden bullish, hidden bearish
Dedup slotone of four registration slots (high/low × regular/hidden) that stops the same end pivot registering twice; claimed only on registration
Noise floor1e-12 × |price|: differences below it are snapped to zero so a flat tape cannot fabricate crossovers. Relative by design — an absolute floor would silence instruments quoted below ~1e-3
Warm-upbars before the first plotted value, counted per kernel (Hull n+√n, TEMA 3n, TRIMA 2(n/2+1), KAMA n+1, others n) plus the signal kernel and a quarter of the norm window
Latchedonce written, never rewritten — outcomes, excursions, registered divergences and fired alerts
Inert gatea gate that has not enough evidence to judge, and therefore admits rather than rejects. The product's consistent choice: a filter that rejects everything during warm-up would silently blank the chart
Plan / projectionthe Entry / SL / TP1 / TP2 quadruple resolved at registration and drawn on the price chart. It is a drawing plus alerts plus journal lines — never an order (§13)
R multiplea distance expressed in multiples of the plan's own risk (entry to stop). TP1 at +1.0R means one unit of risk; the Path panel row speaks the same units (§13.3)
Plan stateRUNNING, TP1 HIT, TP2 HIT, STOPPED, STALE — resolved on closed source bars, with the stop winning any same-bar tie (§13.5)
Same-bar rulewhen one bar touches both the stop and a target, the stop is filled first: OHLC cannot reveal the intrabar order, so the pessimistic fill is the honest one (§13.5)
Break-even hint (BE STOP)a line at the entry level, drawn from the moment TP1 is hit. A suggestion (§13.6)
Chandelier trail (TRAIL n.nA)a trailing stop Trailing Stop ATRs from the best close since entry; ratchets in the position's favour only, refreshes once per closed chart bar, profile-derived reach (§13.6)
Momentum trendlinea support / resistance line through the confirmed pivots' MACD readings. Its break is a lead signal, not a trigger (§14)
x RMS“multiples of the rolling mean absolute MACD” — the oscillator's own scale, and the unit of the trendline slope cap, the break threshold and the Min Oscillator Leg gate (§14.2)
Session markera thin vertical line on the price chart at a configured UTC time. Pure context; occurrence-complete inside wide bars (§15)
AMP-JOURNAL / AMP-PLAN / AMP-OUTCOMEthe three CSV streams of the signal journal, joined by the signal id; live events only (§16)
Cross Modewhich crossover family the on-chart markers follow: signal line, zero line or both. The trigger outputs always follow the signal-line latch (§8)
MACD Higher TFthe twelfth output: the first confluence rung's MACD line, strict-mapped, in the primary line's display units (§12.1)
Closing word Advanced MACD Pro will not tell you where price is going. What it does is remove the three things that make an oscillator unreliable in practice — parameters that mean different things on different timeframes, signals that move after you have acted on them, and a detector that cannot tell you why it stayed quiet — and then hands you the statistics to judge it on your own feed. Read the start-up log, respect the sample sizes, change one gate at a time, and let the four family buckets, not the colour of a label, decide whether a configuration stays.

APPENDICES

Appendix A — Screenshot Index & Naming

Every illustration in this manual lives in the images/ folder next to this file, under the name the referencing section uses. Numbering is intentional and forms blocks: 01–09 the general views (terminal, panel, and the parameter dialog by group block), 10–18 the kernel gallery of §23 in the dialog order of Moving Average Type, 20–29 trade plans, 30–39 momentum trendlines, 40–49 core and markers, 50–59 session markers, 60–69 diagnostics and the journal, 70–79 trading styles.

File in images/StatusWhere it is used
01_workspace_overview.pngdelivered v1.0, re-shot for v2.0the whole terminal: cover, §6.9, §13, §20. The v2.0 frame carries the plan levels (ENTRY / SL -1R / TP1 +1.0R HIT / TRAIL 3.0A) on the price chart, the session verticals, the dotted higher-TF line, both momentum trendlines with a TL BREAK marker, and the enlarged info panel
02_info_panel_closeup.pngdelivered v1.0, re-shot for v2.0the fused info card: §21, §13.8. Now includes TL Sup / TL Res, the plan block (Plan, SL, TP1, TP2, R:R, PState, Path) and Expect / PF
03_parameter_dialog.pngdelivered v1.0, re-shot for v2.0dialog, groups 1–3 (incl. Show Higher-TF MACD Line): §17, §19, §22
04_parameter_dialog_signal_markers.pngnew in v2.0dialog, groups 6–8 (incl. Cross Mode): §8, §17, §22
05_parameter_dialog_trade_management.pngnew in v2.0dialog, groups 11–13: §13.10, §17, §22
06_parameter_dialog_trendlines_sessions.pngnew in v2.0dialog, groups 12–14: §14, §15, §17
10_kernel_simple.png … 18_kernel_wilder.pngdelivered v1.0, unchangedthe nine-kernel gallery of §23 (names corrected in v1.0: capitalisation, the “doble” misspelling and the missing numeric prefixes)
banner.svg, favicon.svgvector assetscover banner and browser-tab icon
20_trade_plan_running.pngplanned — not yet delivereda RUNNING plan: four solid levels with labels, and the divergence that produced it (§13.4)
21_trade_plan_tp1_hit_be.pngTP1 dotted HIT plus the BE STOP line at the entry (§13.6)
22_trade_plan_stopped_void.pngSTOPPED plan: -1R HIT, both targets VOID (§13.5)
23_trade_plan_trail_hint.pngthe TRAIL 3.0A chandelier hint close-up (§13.6)
24_trade_plans_budget.pngthree plans at once against Max Visible Trade Plans (§13.7)
30_macd_trendlines.pngplanned — not yet deliveredsupport and resistance through the pivots' MACD readings, with the TL Sup / TL Res rows (§14.1)
31_trendline_break_marker.pngthe TL BREAK marker on the breaking bar (§14.4)
40_higher_tf_macd_line.pngplanned — not yet deliveredthe dotted MACD Higher TF output against the primary line (§12.1)
41_cross_mode_signal_and_zero.pngCross Mode = SignalAndZero: BUY/SELL and ABOVE 0/BELOW 0 side by side (§8)
50_session_markers.pngplannedthe 07:00 and 13:30 UTC verticals over several days (§15)
60_signal_journal_log.pngplanned — not yet deliveredthe log with AMP-JOURNAL-HEADER, AMP-JOURNAL, AMP-PLAN and AMP-OUTCOME lines (§16)
61_resolved_profile_log.pngthe sixteen start-up profile lines, including the five new ones (§18.1)
62_alert_popup_plan_level.pngthe PLAN TP1 HIT popup and its log line (§11)
70_style_swing_panel.pngplannedTrading Style = Swing: the panel's Style row and the start-up note (§4.3)
How each capture is verified Every pane capture carries the indicator's own title line and info panel. The kernel named there (Kernel row, and the Moving Average Type field of the title) is checked against the file name, so no screenshot is filed under the wrong kernel; all nine gallery frames were taken on the same chart with Signal Line MA Type = SameAsMacdLine and every other setting at its default. Since v2.0 the same rule is applied to the new layers: a frame that documents a plan, a trendline, a session marker or a style must show the corresponding panel row or title field, so a layer can never be illustrated by a capture in which it is switched off. The gallery frames 10–18 predate the higher-TF line and the trendlines; where a clean kernel comparison matters, re-shoot them with Enable MACD Trendlines = false and Show Higher-TF MACD Line = false and note it here.

Appendix B — Source-Code Audit (v2.0, 2026-10-23)

This revision of the manual was re-verified against the shipped source (AdvancedMacdPro.cs, header “ADVANCED MACD PRO 2.0”, 14 245 lines). The comparison was mechanical wherever possible: every [Parameter], [Output] and public enum declaration was extracted from the source and diffed against the tables of Sections 1–3.

What was comparedResult
Parameter set: names, group membership and group counts162 parameters in 15 groups on both sides; per-group counts 1/10/11/9/16/21/7/10/17/19/15/3/12/7/4. Against the v1.0 manual: 30 parameters added, one removed (Mark Zero-Line Crosses Too, replaced by Cross Mode), and all 132 surviving parameters identical in default, MinValue, MaxValue and Step
Output series12 on both sides: names, plot types, thicknesses, line styles and default colours match the [Output] attributes, including the new MACD Higher TF (§12.1)
Public enumerations21 declared, all documented, including the two new ones (MacdCrossMode, StopSourceMode) and the four members of TradingStyle
Hard gates of the divergence funnel9, in the order they run; gate 9 (Hidden: MTF Alignment Gate) is documented in §6.6 with its debug reason hidden vs MTF flow (x)
Alert families and switches6 families, each with its own toggle, plus Alert Cooldown; message formats quoted in §11.2 match the format strings in the source
Quality scorestill 13 components with unchanged weights 0.18/0.10/0.09/0.07/0.06/0.07/0.07/0.10/0.09/0.06/0.05/0.08/0.08 (§6.7); the v2.0 change is the rejection of non-finite values in the funnel, not a re-weighting
Style presetsall three presets write the same surface: 134 assignments each; the tables of §4.3, §4.4 and §32.8 were generated from ApplyStylePreset and list every value that differs from the dialog default (Scalping 47, Swing 17, Position 61)
Plan engine constantsthe [0.5 … 6] ATR risk band, the 0.25 ATR structure floor, the RR2 = 2 × RR1 substitution, the five lifecycle states, the conservative same-bar rule and the label suffixes (HIT / VOID / STALE) all match §13
Trendline engine constantsthe max(10, 2 × gap) redraw throttle, the x-RMS slope cap and break threshold, the one-alert-per-generation flag and the closed-bar break rule match §14
Session markersthe composite key chartIndex × 1 000 000 + occurrence × 1440 + minute, the 1500-object cap and the rolling window match §15
CSV contractthe 16 header columns and the field order of all three streams match §16 exactly, including the WIN / LOSS / EXPIRED codes and the structure / atr stop-mode values
Diagnostics16 resolved-profile lines and 25 distinct WARNING / NOTE messages exist in the source; all are listed in §18.1 and §18.2
Info-panel rowsevery AddItem label in the source appears in §21, including every row the v2.0 panel adds
Persistenceunchanged: the learning counters only, under LocalStorageScope.Type, keyed AMP|symbol|timeframe (§7.4). Plans, trendlines and session markers are re-derived, never persisted
Audit conclusion Every module, parameter, enumeration member, output, preset value, weight, gate, lifecycle state, diagnostic message, CSV column and drawing rule present in AdvancedMacdPro.cs v2.0 is described in Sections 1–3, and every number quoted in this manual equals the number in the source. The v1.0 text remains accurate for everything it covered: the update is additive, and the single behavioural replacement is Cross Mode for the former zero-line checkbox. What is not complete in this revision is the asset set: six photographs are delivered (three re-shot, three new) and sixteen further frames listed in Appendix A are still marked planned.

Advanced MACD Pro — Official User Manual · v2.0 · © 2026. Trading involves substantial risk of loss. Past measurements on one feed do not guarantee future results; this manual describes tooling, not investment advice.